2012-02-10 3 views
0

Извините за вопрос новичков ... Кажется, что в круглой скобке предусмотрены две различные функции в регулярном выражении. Один из них предназначен для группировки, а другой - для извлечения строк (например. A (. *) Z для извлечения строки между символами «a» и «z»). Как бы вы сделали группировку внутри выражения, в котором вы хотите сделать извлечение? Не будет ли интерпретатор регулярных выражений интерпретировать оба набора круглых скобок как экстракции? Как бы вы включили операцию группировки в регулярное выражение, где вы делаете извлечение? Надеюсь, это имеет смысл.Как вы группируетесь в экстракции регулярных выражений?

+0

любой пример был бы appriciated. –

ответ

2

Зависит от аромата (языка) регулярного выражения, но в большинстве вкусов, которые имеют значение (*), (?: запускает «не захватывающую группу», а ) заканчивает ее, как обычно. То есть

(?:abc|cba)(.+) 

Будет соответствовать «ABC» или «CBA», а затем 1 или более произвольных символов, и только те произвольные символы будут захвачены («извлечены»).

*) Когда я говорю «самое главное», это означает что-либо, кроме POSIX и GNU. То есть .NET, Javascript, Java, Python, Ruby, Perl, PHP и т. Д. Одним из важных факторов, когда он не поддерживается, является XPath (и XML Schema).

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