我有以下两句话:
1:关键字这是一个随机的句子 2:这是另一个随机的句子
如果KEYWORD存在,我想在KEYWORD之后匹配所有,如果不存在,我想匹配所有。 所以输出将是:
1:这是一个随机的句子 2:这是另一个随机的句子
我尝试了一些不能让我接近的事情:
(?<=KEYWORD)[\s\S]+This would only match everything after the keyword, but will fail to capture anything if the keyword is not present...
作为ctwheel的优秀工作解决方案的替代方案,您可以使用这个可以执行得更快的正则表达式,因为没有调节贪婪的令牌在每个角色之前断言前瞻。
(?<=KEYWORD |^(?!.*KEYWORD)).*
细节:
(?<=KEYWORD
:如果我们在之前的位置有"KEYWORD "
|
:或^(?!.*KEYWORD)
:我们在任何地方都没有KEYWORD
.*
:匹配任何字符的0或更多(?<=KEYWORD).*|^(?:(?!KEYWORD).)*$
(?<=KEYWORD)
积极的外观确保KEYWORD
之前的前景
.*
任何次数匹配任何角色(\n
除外)^
在线的开头断言位置
(?:(?!KEYWORD).)*
Tempered greedy token匹配任何字符,除了KEYWORD
匹配的地方
$
在线的末尾断言位置结果:
this is a random sentence
this is another random sentence