Стандартизован ли синтаксис написания регулярных выражений? То есть, если я напишу регулярное выражение на C ++, оно будет работать на Python или Javascript без каких-либо изменений.
Нет, существует несколько диалектов регулярных выражений.
Они обычно имеют много общих элементов.
Некоторые популярные из них перечислены и сравнены здесь .
Нет, вот некоторые различия, которые приходят на ум:
JavaScript позволяет писать встроенное регулярное выражение (где \ в \s не нужно экранировать как \\s), которые разделены символом /. Вы можете указать флаги после закрытия /. JS также имеет конструктор RegExp, который принимает экранированную строку в качестве первого аргумента и необязательную строку флага в качестве второго аргумента.
\
\s
\\s
/
RegExp
/^\w+$/i и new RegExp("^\\w+$", "i") действительны и одинаковы.
/^\w+$/i
new RegExp("^\\w+$", "i")
В PHP вы можете заключить строку регулярного выражения в произвольный разделитель по вашему выбору (хотя и не уверены в суперсимволе символов, который можно использовать в качестве разделителей). Снова вы должны избежать обратной косой черты здесь.
"|[0-9]+|" совпадает с #[0-9]+#
"|[0-9]+|"
#[0-9]+#
Python и C # поддерживают необработанные строки (не ограничиваясь регулярными выражениями, но действительно полезные для написания регулярных выражений), которые позволяют записывать обратные косые черты без экранирования в регулярное выражение.
"\\d+\\s+\\w+" можно записать как r'\d+\s+\w+' в Python и @'\d+\s+\w+' в C #
"\\d+\\s+\\w+"
r'\d+\s+\w+'
@'\d+\s+\w+'
Разделители, такие как \<, \A и т. Д., Не поддерживаются во всем мире.
\<
\A
DOTALL
Простые регулярные выражения, в основном да. Однако во всем спектре языков программирования есть различия.