Регулярное выражение для поиска слов, которые не находятся между "" символами - PullRequest
1 голос
/ 21 сентября 2019

Я получаю данные из HTTP-запроса GET, который не является допустимым JSON:

{       updates : {
                mode_a1 : "Disarm",
                mode_a2 : "Disarm",
                battery : "Normal",
                tamper : "Close",
                interference : "Normal",
                ac_activation : "Normal",
                rssi : "13",
                sig_gsm : "N/A"
        },
        forms : {
                pcondform1 : {
                        mode : "4",
                        f_arm : "0"
                },
                pcondform2 : {
                        mode : "4",
                        f_arm : "0"
                }
        }
}

Как видите, свойства не указаны.Поэтому я хочу получить все слова, которые не цитируются с помощью регулярного выражения.Но я не знаю, как исключить слова, которые уже находятся внутри "" символов.

Это то, что я имею до сих пор.(\ w +)

http://regexr.com/4ldtc

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Для данных вашего примера, если вы хотите сопоставлять только символы слова \w+, вы можете использовать отрицательный взгляд за спиной, чтобы проверить, что слева не символ, не являющийся пробелом, и положительный взгляд, чтобы утверждать, что справа - пробел: пробел.

(?<!\S)\w+(?= : )

При замене используйте полное совпадение в двойных кавычках

@"""$0""";

Regex demo | C # демо

1 голос
/ 21 сентября 2019

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

(\w+)(?=\s*:)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...