Вытащить данные из кавычек? - PullRequest
4 голосов
/ 16 октября 2008

Я ищу регулярное выражение, которое может извлекать цитируемые разделы в строке, как одинарные, так и двойные кавычки.

IE:

"This is 'an example', \"of an input string\""
* * 1005 Матчи: * * 1006
  • пример
  • входной строки

Я написал это:

 [\"|'][A-Za-z0-9\\W]+[\"|']

Это работает, но кто-нибудь видит какие-либо недостатки с ним?

РЕДАКТИРОВАТЬ: Основная проблема, которую я вижу, это то, что он не может обрабатывать вложенные кавычки.

Ответы [ 5 ]

3 голосов
/ 16 октября 2008

Как он обрабатывает одинарные кавычки внутри двойных кавычек (или наоборот)?

"This is 'an example', \"of 'quotes within quotes'\""

должно соответствовать

  • пример
  • из «кавычек в кавычках»

Используйте обратную ссылку, если вам нужно это поддержать.

(\"|')[A-Za-z0-9\\W]+?\1

РЕДАКТИРОВАТЬ: Исправлено использование нечетного квантификатора.

1 голос
/ 16 октября 2008

Как это?

"([\"'])(.*?)\1"

Ваше желаемое совпадение будет в подгруппе 2, а вид цитаты - в первой группе.

Недостаток в вашем регулярном выражении: 1) жадные "+" и 2) [A-Za-z0-9] на самом деле не очень много. Многие символы не находятся в этом диапазоне.

0 голосов
/ 17 октября 2008

Возможно, у вас уже есть один из них, но, если нет, вот бесплатный инструмент с открытым исходным кодом, который я постоянно использую для проверки своих регулярных выражений. У меня обычно есть общее представление о том, как должно выглядеть выражение, но мне нужно возиться с некоторыми подробностями.

http://renschler.net/RegexBuilder/

0 голосов
/ 17 октября 2008
@"(\"|')(.*?)\1"
0 голосов
/ 16 октября 2008

Работает, но не совпадает с другими символами в кавычках (например, не алфавитно-цифровыми, такими как двоичные или иностранные символы). Как насчет этого:

[\"']([^\"']*)[\"']

Мое регулярное выражение в C # немного ржавое, поэтому будьте осторожны со мной, если это не совсем верно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...