Как отфильтровать подмножество вложенных регулярных выражений для соответствующих групп - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь изобразить шаблон регулярного выражения, чтобы вернуть все символы, кроме пробелов между двумя специальными символами (;).Спасибо за помощь.

Вот мой шаблон регулярных выражений.[^\w](?<Group1>[^;\W].+)

Пример текста для сравнения.Please; help;me

Я получил help;me в качестве участника группы 1, но мне нужно просто help.

1 Ответ

0 голосов
/ 10 октября 2018

Шаблон [^\w](?<Group1>[^;\W].+) соответствует несловесному символу, а затем захватывает любой символ, кроме словесного и ; (т. Е. Любое слово, кроме ; - что не имеет большого смысла, ; может быть безопасноудаляется из класса), а затем любые 1+ символов как можно больше в Группу 1. По сути, он может быть переписан как \W(?<Group1>\w.+), и вы увидите, что он соответствует слишком много, а не то, что вам нужно.

Вы можете использовать шаблон , например, , где \S*? соответствует любым 0+ символам, кроме пробелов, как можно меньше:

;\s*(?<Group1>\S*?)\s*;

Или более эффективный вариант этогоpattern:

;\s*(?<Group1>[^;\s]*)\s*;

В шаблоне [^;\s]* ; "вычитается из \S, и [^;\s]* теперь соответствует нулю или большему числу символов, кроме пробелов и ;, столько, скольковозможно.

См. еще одну демонстрацию регулярных выражений .

...