正则表达式在开始时自己匹配单词,或者附加到某些内容但在输入结束时不重复字符串

时间:2015-03-11 22:52:20

标签: c++ regex

背景

所以我正在努力获得一个与下面的 hello 匹配的正则表达式 例:

匹配

hello world
I am somehello
hello
somehello

不匹配

I am hello world
I am somehello word
somehellow word

原始正则表达式

基本上,我试图压缩这两个正则表达式规则:

^hello\b
hello$

我尝试了什么

我正在考虑做前瞻(正面或负面)或外观(正面或负面)和匹配,例如,a ^后跟\ b但是这也会匹配“helloworld something”,我不想匹配。< / p>

问题:

将两个正则表达式合并为一个而不必像两次那样写出两个单词的最佳方法是什么? ^ hello \ b | hello $

我正在处理很多字符串,而不仅仅是hello,它应该与正则表达式匹配,所以我试图消耗空间(如果功能允许它当然)。

1 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

"^hello|hello$"

编辑:回答编辑过的问题:

如果您使用的是Perl样式正则表达式(PCRE),那么您可以使用以下内容(我已使用grep -P进行了测试):

$ grep -P "^(hello)\b|(?1)$" file.txt
hello world
I am somehello
hello
somehello

这里我们将hello作为一个组捕获,然后使用例行调用稍后引用它。 (感谢nhahtdh为此)