Какие функции регулярных выражений являются стандартными, а какие особенными?
Что делать, а не делать, если я хочу использовать одно и то же регулярное выражение в другом контексте, языки, платформы?Как сделать портативное регулярное выражение?
ответ
Там нет стандарта, но если максимальная портативность ваша цель, вы должны придерживаться функций, поддерживаемых регулярных выражений 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
и т. Д.), Поскольку совпадения всегда привязаны с обоих концов.
- 1. Как сделать правильное регулярное выражение
- 2. Как сделать регулярное выражение ROR
- 3. Как сделать заказ регулярное выражение
- 4. Как сделать это регулярное выражение?
- 5. Как сделать регулярное выражение «предпочтительнее»?
- 6. Как сделать это регулярное выражение?
- 7. Как сделать это регулярное выражение?
- 8. Как сделать хорошее регулярное выражение?
- 9. Как сделать это регулярное выражение?
- 10. Сделать регулярное выражение Python
- 11. Сделать это регулярное выражение короче
- 12. Сделать регулярное выражение более эффективным
- 13. Попытка сделать простое регулярное выражение
- 14. Помогите сделать хорошее регулярное выражение?
- 15. Как сделать регулярное выражение в скрипте AutoIt
- 16. Как сделать это регулярное выражение более компактным?
- 17. Как сделать регулярное выражение. есть все?
- 18. Как сделать регулярное выражение для имени Validation
- 19. Как сделать регулярное выражение таким образом?
- 20. Как сделать неживое регулярное выражение для следующего?
- 21. Как сделать это регулярное выражение более общим?
- 22. Как сделать регулярное выражение PHP в C#?
- 23. Как сделать регулярное выражение для другого матча?
- 24. как сделать это регулярное выражение жадного
- 25. Как я могу сделать это регулярное выражение?
- 26. Как сделать регулярное выражение на интерполированных струнах
- 27. регулярное выражение - как сделать lookahead pattern
- 28. Как сделать это регулярное выражение в mysql?
- 29. Как это сделать SED регулярное выражение
- 30. Как сделать это регулярное выражение javascript жадным?
Алан, ваш комментарий к моему ответу был справедливым, поэтому я удалил его (и потому, что ваш лучший ответ на поставленный вопрос!). +1 –