Регулярное выражение - дефисы должны быть сбежал? [дубликат]
Возможные Дубликаты:
как дефисы с регулярным выражением?
дефис-это специальный символ в регулярном выражении, например, чтобы выбрать диапазон, я мог бы сделать что-то вроде:
[0-9A-F]
но за пределами квадратных скобок это обычный символ справа? Я проверил это на нескольких онлайн-тестерах регулярных выражений, и дефисы, похоже, функционируют как обычный символ вне квадратных скобок (или даже внутри квадратных скобок, если он не находится между двумя символами-например, [- g] кажется совпадающим - или g) независимо от того, экранирован он или нет. Я не мог найти ответ на этот вопрос, но мне интересно, является ли это обычным, чтобы избежать дефисов.
спасибо!
3 ответов:
правильно на всех фронтах. Вне класса символов (так называются" квадратные скобки") дефис не имеет особого значения, а внутри класса символов вы можете поместить дефис в качестве первого или последнего символа в диапазоне (например,
[-a-z]или[0-9-]),или побег (например,[a-z\-0-9]), чтобы добавить "дефис" в свой класс.чаще всего можно найти дефис, помещенный первым или последним в классе символов, но ни в коем случае вы не будете линчеваны ордами о яростных бородах за то, что они решили сбежать от него вместо этого.
(на самом деле... мой опыт заключается в том, что многие регулярные выражения используются людьми, которые не полностью Грок синтаксис. В этих случаях вы, как правило, видите все экранированные (например,
[a-z\%$\#\@\!\-\_]) просто потому, что инженер не знает, что "особенное", а что нет... таким образом, они "играют в безопасность" и запутывают выражение с нагрузками чрезмерных обратных косых черт. Вы будете делать себя, своих современников и свое потомство огромным пользу, потратив время, чтобы действительно понять синтаксис регулярных выражений перед его использованием.)большой вопрос!
вне классов символов, это обычный не чтобы избежать переносов. Если бы я увидел беглый дефис вне класса символов, это означало бы, что он был написан кем-то, кто не очень хорошо разбирался в регулярных выражениях.
внутри классов символов я не думаю, что один способ является обычным по сравнению с другим; по моему опыту, это обычно кажется, чтобы поставить либо первый, либо последний, как в
[-._:]или[._:-], чтобы избежать обратной косой черты, но я также часто видели, что он убежал вместо этого, как в[._\-:]и я бы не назвал это unобычные.
обычно вы всегда ставите дефис первым в матч. Например, чтобы соответствовать любым буквенно-цифровым, включая дефисы (написанные длинным путем), вы бы использовали
[-a-zA-Z0-9]
Comments