Как я могу найти строку внутри двойных кавычек? - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу найти регулярное выражение, отделяя каждое слово и строку двойных кавычек.

Например, если у меня есть такое предложение

cmd -c \"reg query \\\"HKLM\\System\\CurrentSet\\\"\"

Я должен искать по этим groups.

[(cmd), (-c), (\"reg query \\\"HKLM\\System\\CurrentSet\\\"\")] 

Поэтому я попытался сделать это с помощью регулярного выражения.

(([\'\"]).+?.*\")\s|(["A-Z\\a-z-]{0,})

Но результат поиска получился следующим образом.

[(cmd), (-c), (\"reg), (query), (\\\"HKLM\\System\\CurrentSet\\\"\")]

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

[(cmd), (-c), (\"reg query \\\"HKLM\\System\\CurrentSet\\\"\")]

1 Ответ

0 голосов
/ 06 февраля 2020

А как насчет этого регулярного выражения: \\".*?(?<!\\\\)\\"|\S+

Объяснение

  • \\".*? соответствует \", за которым следует что-либо с несвязным поиском.

  • (?<!\\\\)\\" соответствует \", которому не предшествует \\ (две косые черты).

  • |\S+ означает "или некоторые непробельные символы один или более ".

Код

Версия PCRE с PHP:

$regex = '/\\\\".*?(?<!\\\\\\\\)\\\\"|\S+/m';

PHP тест здесь: https://regex101.com/r/uEUn6d/1

Версия Python:

import re

regex = r"\\\".*?(?<!\\\\)\\\"|\S+"

Python проверить здесь: https://regex101.com/r/uEUn6d/3

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