我要处理以下几行Iogs。
date time time-taken cs(Referer) x-cs(Referrer) x-cs(Referrer)-certs ...
我正在解析这个巨大的日志,几乎2 GB的文件。由于某种原因,我必须替换此行标题。字段数量巨大。
挑战是-
如果我使用单词边界正则表达式\btime\b
,它也匹配'time-taken
'。并且应将“ -
”作为非单词字符。但是如何克服呢?我想完全匹配每个标题字段。
Sameway为“ cs(Referer)
”,它存在于“ x-cs(Referer)
”和许多地方。
因此,目的是精确匹配这些混合词(单词和非单词字符)。完全匹配每个单词。
答案 0 :(得分:1)
根据您在评论中所说的,我认为这将解决您的问题:
(?:(?<=\s)|(?<=))[^\s]+(?=\s|$)
https://regex101.com/r/6L1NRM/2
(?:(?<=\s)|(?<=))
告诉正则表达式,匹配的任何内容前均应加空格或行首。在我以前的回答中,我使用了(?<=\s|^)
,但是它没有用,因为Notepad ++不支持可变长度的后向查找。
[^\s]+
搜索一个或多个非空格字符(在您的情况下为要匹配的文本)
(?=\s|$)
告诉正则表达式,匹配项后应跟空格或行尾。