Мой вопрос прост, и речь идет об ускорении регулярных выражений. Вам нужно избегать косой черты /
в регулярном выражении? И как бы вы это сделали?
Выключение прямой косой черты в регулярном выражении
Ответ 1
Какой контекст/язык? Некоторые языки используют /
как разделитель шаблонов, поэтому да, вам нужно избежать этого, в зависимости от того, какой язык/контекст. Вы избежите этого, поставив перед ним обратную косую черту: \/
Для некоторых языков (например, PHP) вы можете использовать другие символы в качестве разделителя, и поэтому вам не нужно его избегать. Но AFAIK на всех языках, единственное особое значение, которое имеет значение /
, - это назначенный шаблонный разделитель.
Ответ 2
Вот несколько вариантов:
В Perl вы можете выбрать альтернативные разделители. Вы не ограничены
m//
. Вы можете выбрать другой, например,m{}
. Тогда бежать не нужно. На самом деле Дамиан Конуэй в "Perl Best Practices" утверждает, чтоm{}
является единственным альтернативным разделителем, который следует использовать, и это усиливается Perl :: Critic (на CPAN). В то время как вы можете избежать использования различных альтернативных символов-разделителей,//
и{}
кажутся наиболее ясными для расшифровки позже. Однако, если какой-либо из этих вариантов приведет к слишком большому спасению, выберите тот, который лучше всего подходит для разборчивости. Типичными примерами являютсяm(...)
,m[...]
иm!...!
.В тех случаях, когда вы не можете или предпочитаете не использовать альтернативные разделители, вы можете избежать прямой косой черты с помощью обратной косой черты: например,
m/\/[^/]+$/
(используя альтернативный разделитель, который может статьm{/[^/]+$}
, который может читаться более четко). Избежать косой черты с помощью обратной косой черты достаточно часто, чтобы заработать имя и страницу википедии: Синдром наклоняющейся зубочистки. В регулярных выражениях, где есть только один экземпляр, экранирование косой черты может не подняться до уровня, который считается помехой для разборчивости, но если он начинает выходить из-под контроля и если ваш язык разрешает использование альтернативных разделителей, как это делает Perl, это будет быть предпочтительным решением.
Ответ 3
Используйте обратную косую черту \
или выберите другой разделитель, т.е. m#.\d#
вместо /.\d/
"В Perl вы можете изменить разделитель/регулярный выражение почти для любого другого специального символа, если вы преследуете его буквой m (для соответствия);"
Ответ 4
Если разделителем является /, вам нужно сбежать.
Ответ 5
Если вы используете С#, вам не нужно избегать его.