2010-05-16 3 views

ответ

4

Там нет стандарта, но если максимальная портативность ваша цель, вы должны придерживаться функций, поддерживаемых регулярных выражений JavaScript. Все другие основные ароматы поддерживают все, что делает JS, с небольшими вариациями здесь и там. Например, некоторые поддерживают только нотацию символьного класса POSIX ([:alpha:]), а другие используют синтаксис Unicode (\p{Alpha}).

Возможно, наиболее неприятными являются варианты, которые влияют на точку (.) и анкеры (^ и $). Например, JavaScript не имеет режима DOTALL (или «однострочный»), поэтому для соответствия чему-либо , включая новую строку, вы должны использовать взломанный как [\s\S]. Между тем, Ruby имеет режим DOTALL, но называет его multiline режим - то, что каждый еще звонки «многострочные» (^ и $ как линейные якоря) - это то, как Ruby всегда работает.

Знайте, что именно точка не совпадает (в режиме по умолчанию). Традиционно это была всего лишь линейная подача (\n), но все больше и больше ароматов принимают (или, по крайней мере, приближаются) Unicode guidelines относительно разделителей строк. Например, в Java точка не соответствует ни одному из [\r\n\u0085\u2028\u2029], тогда как ^ и $ обрабатывают \r\n как отдельный разделитель и не совпадают между двумя символами.

Обратите внимание, что я говорю только о Perl-производные ароматизаторов, как Python, Ruby, PHP, JavaScript, и т.д .. Это не имело бы смысла inlcude ароматизаторов GNU или POSIX на основе, как Grep, AWK, и MySQL; они, как правило, имеют меньше возможностей, но это не то, что вы бы выбрали для них в любом случае.

Я также не включаю аромат XML Schema; он гораздо более ограничен, чем JavaScript, но это специализированное приложение. Например, он не поддерживает анкеры (^, $, \A, \Z и т. Д.), Поскольку совпадения всегда привязаны с обоих концов.

+0

Алан, ваш комментарий к моему ответу был справедливым, поэтому я удалил его (и потому, что ваш лучший ответ на поставленный вопрос!). +1 –

1

Здесь вы можете найти полезное: reference. И здесь у вас есть лучшие book Я когда-либо читал о предмете. Тогда в этом page под особенности языка (Часть 1 & 2) вы можете увидеть некоторые различия

Смежные вопросы