2015-07-29 3 views
1

У меня есть строка, как:Регулярное выражение матч ничего, включая переводы строк

/* Remove */ 
"REMOVE" = "Löschen \ 
"; 

И у меня есть регулярное выражение для строки между «» = «»

"(\S+)"\s*=\s*"(.*?[\w\r\n]).*?"; 

То, что я должен добавить, чтобы соответствовать, если строка больше новой строки в нем, например:

/* Remove */ 
"REMOVE" = "Lös \ 
ch \ 
en \ 
"; 
+0

Это не похоже на любую известную строку исходного кода. Что, если ваше содержимое строки содержит '' 'в теле?' "REMOVE" = "th; is" con; tent "; ; ";"; – sln

+0

, тогда возникает проблема – user3308470

ответ

2

Вы можете просто использовать (.*?) и dotall флаг, с которым делает матч дот символы новой строки тоже:

(?s)"(\S+)"\s*=\s*"(.*?)" 

Посмотреть демо https://regex101.com/r/vM3tG6/2

0

Может быть, это:

(.*)"\s*=\s*"((?:.|\n)*) 

Regex live here.

+0

, но она не соответствует тексту после строки новой строки – user3308470

+0

@ user3308470. Простите за это. Теперь это так. –

1

Вы можете использовать это регулярное выражение:

"(\S+)"\s*=\s*"([^"]*)"; 

RegEx Demo

[^"]* - шаблон отрицания, который будет соответствовать любому символу (включая новую строку), за исключением двойной кавычки.

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