是否可以制作一个匹配的表达式,在这个单词之前和之后说'FINDTHISWORD'+最多5个单词?事情是,之前或之后可能只有0或1个单词,所以它应匹配0-5个单词+ FINDTHISWORD然后0-5个单词。
它应该匹配的例子:
fdoijfd iudfhiufdh fdhui FINDTHISWORD iduhdfd
FINDTHISWORD iduhdfd oijfdfd
doijd FINDTHISWORD
答案 0 :(得分:14)
你可以使用量词:
(\w+ ){0,5}FINDTHISWORD( \w+){0,5}
答案 1 :(得分:0)
我会这样做:
((?:\p{Xwd}+\P{Xwd}){0,5})\bFINDTHISWORD\b((?:\P{Xwd}\p{Xwd}+){0,5})
其中
\p{Xwd}
表示字符unicode兼容的任何单词
\P{Xwd}
是\p{Xwd}
之前的单词将在第1组中,而在第2组之后的单词。
答案 2 :(得分:0)
可能不如长正则表达式和量词表那么优雅,但阅读和理解起来非常简单:
grep FINDTHIS file | while read X; do xargs -n1 <<<$X | grep -C5 FINDTHIS|xargs;done
基本上,它找到包含FINDTHIS的行,然后一次一个地读取它们到一个循环中。在循环中,行中的单词各自放在他们自己的行上,然后我只使用常规grep
,上下文为5(-C5
),在重新组合之前获取5个单词线。