Все должны заключаться в необязательные одинарные или двойные кавычки - PullRequest
0 голосов
/ 05 августа 2020

Я разрабатываю регулярное выражение для анализа значений из ответа JSON, но у меня проблемы с одним полем, потому что оно содержит текст, написанный человеком, поэтому, поскольку содержимое может меняться и нарушать регулярное выражение, мне нужен регулярное выражение, которое будет соответствовать всем следующим потенциальным значениям:

, 'resolve_comment': "This value's comment contains an apostrophe / single quotation mark so it will be automatically enclosed in double quotation marks", 
, 'resolve_comment': 'Some comments, like this one, contain a comma. If there is no comment then there will be no quotation marks as you can see below.', 
, 'resolve_comment': None, 

Ни одно из регулярных выражений, которые я нашел в сети, не сработало для всех трех сценариев ios.

Ближайший I 've получил:

  1. 'resolve_comment': (?:(?:"(?P<resolve_comment>[^"]*)")|(?:'(?P<resolve_comment>[^']*)')|(?P<resolve_comment>None)), , но система не позволяет дублировать имена групп захвата.
  2. 'resolve_comment': (?:(?:"([^"]*)")|(?:'([^']*)')|(None)),, но это создало 3 группы захвата, из которых только одна была заполнена .
  3. 'resolve_comment': ["|']?(.*)["|']?,, но это оставляет конечную кавычку, что не идеально.

1 Ответ

0 голосов
/ 08 августа 2020

это мое регулярное выражение, и оно соответствует всем вашим потенциальным значениям, попробуйте следующее:

(?<=").*(?=")|(?<=').*(?=')|None

, поэтому я сопоставляю все между «» и '', а также значение None. Он не соответствует таким строкам, как '", считая, что здесь это недействительно. См. Здесь: https://regex101.com/r/yV9GES/1

скажите мне, искали ли вы что-то еще?

...