Регулярное выражение - дефисы должны быть сбежал? [дубликат]




Возможные Дубликаты:
как дефисы с регулярным выражением?






дефис-это специальный символ в регулярном выражении, например, чтобы выбрать диапазон, я мог бы сделать что-то вроде:



[0-9A-F]


но за пределами квадратных скобок это обычный символ справа? Я проверил это на нескольких онлайн-тестерах регулярных выражений, и дефисы, похоже, функционируют как обычный символ вне квадратных скобок (или даже внутри квадратных скобок, если он не находится между двумя символами-например, [- g] кажется совпадающим - или g) независимо от того, экранирован он или нет. Я не мог найти ответ на этот вопрос, но мне интересно, является ли это обычным, чтобы избежать дефисов.



спасибо!

480   3  

3 ответов:

правильно на всех фронтах. Вне класса символов (так называются" квадратные скобки") дефис не имеет особого значения, а внутри класса символов вы можете поместить дефис в качестве первого или последнего символа в диапазоне (например,[-a-z] или [0-9-]),или побег (например,[a-z\-0-9]), чтобы добавить "дефис" в свой класс.

чаще всего можно найти дефис, помещенный первым или последним в классе символов, но ни в коем случае вы не будете линчеваны ордами о яростных бородах за то, что они решили сбежать от него вместо этого.

(на самом деле... мой опыт заключается в том, что многие регулярные выражения используются людьми, которые не полностью Грок синтаксис. В этих случаях вы, как правило, видите все экранированные (например,[a-z\%$\#\@\!\-\_]) просто потому, что инженер не знает, что "особенное", а что нет... таким образом, они "играют в безопасность" и запутывают выражение с нагрузками чрезмерных обратных косых черт. Вы будете делать себя, своих современников и свое потомство огромным пользу, потратив время, чтобы действительно понять синтаксис регулярных выражений перед его использованием.)

большой вопрос!

вне классов символов, это обычный не чтобы избежать переносов. Если бы я увидел беглый дефис вне класса символов, это означало бы, что он был написан кем-то, кто не очень хорошо разбирался в регулярных выражениях.

внутри классов символов я не думаю, что один способ является обычным по сравнению с другим; по моему опыту, это обычно кажется, чтобы поставить либо первый, либо последний, как в [-._:] или [._:-], чтобы избежать обратной косой черты, но я также часто видели, что он убежал вместо этого, как в [._\-:] и я бы не назвал это unобычные.

обычно вы всегда ставите дефис первым в матч. Например, чтобы соответствовать любым буквенно-цифровым, включая дефисы (написанные длинным путем), вы бы использовали [-a-zA-Z0-9]

Comments

    Ничего не найдено.