我有以下两句话:
1:KEYWORD这是一个随机的句子
2:这是另一个随机句子
如果KEYWORD存在,我想在KEYWORD之后匹配所有,如果不存在,我想匹配所有。
所以输出将是:
1:这是一个随机的句子
2:这是另一个随机句子
我尝试了一些不能让我接近的事情:
(?<=KEYWORD)[\s\S]+这只会匹配关键字后的所有内容,但如果关键字不存在则无法捕获任何内容...
答案 0 :(得分:3)
(?<=KEYWORD).*|^(?:(?!KEYWORD).)*$
(?<=KEYWORD)
确保前面的正面观察是KEYWORD
.*
任意次数匹配任何字符(\n
除外)^
在行首处断言位置(?:(?!KEYWORD).)*
Tempered greedy token匹配除KEYWORD
匹配$
断言行尾的位置结果:
this is a random sentence
this is another random sentence
答案 1 :(得分:3)
作为ctwheel的优秀工作解决方案的替代方案,您可以使用这个可能执行得更快的正则表达式,因为没有调节贪婪的令牌在每个角色之前断言前瞻。
(?<=KEYWORD |^(?!.*KEYWORD)).*
<强>详细信息:强>
(?<=KEYWORD
:如果我们在之前的位置"KEYWORD "
|
:或^(?!.*KEYWORD)
:我们在行中的任何地方都没有KEYWORD
.*
:匹配0或更多任何字符