在文本编辑器(如Notepad ++或Emeditor)中使用正则表达式对单词(单词和非单词字符的混合)进行精确匹配

时间:2019-05-19 18:38:29

标签: regex notepad++

我要处理以下几行Iogs。

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

我正在解析这个巨大的日志,几乎2 GB的文件。由于某种原因,我必须替换此行标题。字段数量巨大。

挑战是-

  1. 如果我使用单词边界正则表达式\btime\b,它也匹配'time-taken'。并且应将“ -”作为非单词字符。但是如何克服呢?我想完全匹配每个标题字段。

  2. Sameway为“ cs(Referer)”,它存在于“ x-cs(Referer)”和许多地方。

因此,目的是精确匹配这些混合词(单词和非单词字符)。完全匹配每个单词。

1 个答案:

答案 0 :(得分:1)

根据您在评论中所说的,我认为这将解决您的问题:

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

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

说明-

(?:(?<=\s)|(?<=))告诉正则表达式,匹配的任何内容前均应加空格或行首。在我以前的回答中,我使用了(?<=\s|^),但是它没有用,因为Notepad ++不支持可变长度的后向查找。

[^\s]+搜索一个或多个非空格字符(在您的情况下为要匹配的文本)

(?=\s|$)告诉正则表达式,匹配项后应跟空格或行尾。

相关问题