#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)"?
Примечание: Если строки могут содержать экранированные кавычки, решение на основе регулярных выражений не совсем возможно.