Точное совпадение слов (сочетание слов и несловесных символов) с использованием регулярных выражений в текстовом редакторе, таком как Notepad ++ или Emeditor - PullRequest
0 голосов
/ 19 мая 2019

У меня ниже строки Iogs для работы.

date time time-taken cs(Referer) x-cs(Referrer) x-cs(Referrer)-certs ...

Я анализирую этот огромный журнал, почти 2 ГБ файла.Я должен заменить эту строку заголовка по некоторым причинам.Поля огромные по количеству.

Задачи: -

  1. Если я использую регулярное выражение границы слова, \btime\b, оно также соответствует 'time-taken'.И так как '-' не является символом слова.Но как это побороть?Я хочу точно сопоставить каждое поле заголовка.

  2. Sameway 'cs(Referer)', оно присутствует в 'x-cs(Referer)' и во многих местах.

Таким образом, целью является точное совпадение этих гибридных слов (словесных и несловесных символов).Точно сопоставьте каждое слово как собственное.

1 Ответ

1 голос
/ 19 мая 2019

Исходя из того, что вы заявили в комментариях, я думаю, что это решит вашу проблему:

(?:(?<=\s)|(?<=))[^\s]+(?=\s|$)

https://regex101.com/r/6L1NRM/2

Объяснение -

(?:(?<=\s)|(?<=)) говорит регулярному выражению, что любому совпадению должно предшествовать либо пробел, либо начало строки. В моем предыдущем ответе я использовал (?<=\s|^), но это не сработало, потому что Notepad ++ не поддерживает функции обратной длины.

[^\s]+ ищет один или несколько непробельных символов (в вашем случае, сопоставляемый текст)

(?=\s|$) сообщает регулярному выражению, что за соответствием должен следовать либо пробел, либо конец строки.

...