Извлеките текст между цитатами и добавьте второе слово

#regex

Вопрос:

Мне нужно извлечь текст в Gate с исключенными кавычками, а также включить null в качестве другого подходящего слова.

 # "gate":"A11","terminal":"5"
# "gate":508B,"terminal":"2"
# "gate":"D8","terminal":"1"
# "gate":null,"terminal":null

# desired output:
# A11, 508B, D8, null

 

Я попробовал что-то вроде этого: "gate":(.*?),"terminal":.* , но это будет включать цитаты. Кроме того, я попытался исключить кавычки , попробовав "gate":"([^"]*)","terminal":.* , но я не знал, как соответствовать «нулю».

Кто-нибудь может помочь с этим?

Комментарии:

1. С помощью PCRE вы можете использовать "gate":(?|"([^"]*)"|(w )),"terminal":.*

2. Если все ваши данные структурированы таким образом, то я бы сказал, что регулярное выражение не является подходящим инструментом для этой работы. Однако ваш второй вариант близок. Он не должен совпадать с нулем. Используйте вместо * того, чтобы убедиться, что в кавычках что-то есть.

Ответ №1:

Это должно дать вам то, что вы хотите, по крайней мере, для примеров, которые вы упомянули:

 "gate":"?([^"] |null)"?,"terminal":"?([^"] |null)"?
 

Примечание: Если строки могут содержать экранированные кавычки, решение на основе регулярных выражений не совсем возможно.