Все символы вокруг ключевого слова, но остановка на пробелах - PullRequest
0 голосов
/ 16 октября 2018

enter image description here

OPSDTLHDR 1000 ACTIVE MATCHSOMETHINGSOMETHING

INPTSTHDR AKKCCT_APSMATCHSOMETHING

В приведенном вышеизображение, ключевое слово "MATCH".Я хочу все вокруг MATCH, но мне нужно остановиться на пробелах.

С первой строки мне потребуется MATCHSOMETHINGSOMETHING, а со второй AKKCCT_APMATCHSOMETHING.

Если (MATCH)\w+, MATCHSOMETHINGSOMETHING проходит через ok, но получите только MATCHSOMETHING из второй строки.

Если .+?(MATCH)\w+, я получу обратно обе целые строки.

Если \w+?(MATCH)\w+, я вернусь AKKCCT_APMATCHSOMETHING, но ничего из первой.

Я работаю в текстовом редакторе Atom.

1 Ответ

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

Шаблон (MATCH)\w+ будет захватывать MATCH в группе захвата, за которым следует один или несколько раз символ слова, который будет соответствовать MATCHSOMETHING в AKKCCT_APMATCHSOMETHING

Использование .+?(MATCH)\w+ будет соответствовать обеим строкампотому что вы используете точку, которая также соответствует пробелу, так что будет соответствовать до OPSDTLHDR 1000ACTIVE MATCH, а затем будет соответствовать остальным символам слова.

\w+?(MATCH)\w+ не соответствует первому, потому что \w+ соответствуетхотя бы один символ слова перед MATCH

Вы можете сопоставить не символ пробела \S ноль или более раз, затем MATCH, а затем снова не символ пробела ноль или более раз:

\S*MATCH\S*

Regex demo

...