这是我要排除某些模式(| 2正常)的那一行:
#TR|1 Normal Rationale|2 Normal Yesterday I ate an apple.|2 Normal Today, I have some work.|2 Normal Tomorrow, I'm gonna eat Libanese food.
我尝试了以下表达式:
\|\d+ [^\t]+\tRationale([^\|2 Normal]+)
据我所知,序列([^ \ | 2 Normal] +)应该写入与“ ^ \ | 2 Normal”不匹配的任何字符,但实际上不返回任何内容。 / p>
预期结果:
我想将此作为输出:
“昨天我吃了一个苹果。今天,我有工作。明天,我要吃黎巴嫩食物。”
或者,即使有可能,也可以在每个句子之间添加换行符:
“昨天我吃了一个苹果。”
“今天,我有一些工作。”
“明天,我要吃黎巴嫩食物。”
实际结果:
如果我输入此正则表达式:
\|\d+ [^\t]+\tRationale([^\|2 Normal]+)
上面的此正则表达式不返回任何内容 而这个:
\|\d+ [^\t]+\tRationale(.*)
返回:
|2 Normal Yesterday I ate an apple.|2 Normal Today, I have some work.|2 Normal Tomorrow, I'm gonna eat Libanese food.
有解决方案吗?
谢谢
答案 0 :(得分:0)
您可能要做的是使用替换来匹配可选的Rationale或#TR,并在替换中使用换行符:
(?:\s*(?:Rationale|#TR)?\|\d+ Normal\s+)+
说明
(?:
非捕获组
\s*(?:Rationale|#TR)?
-匹配0+个空格字符和基本原理或#TR \|\d+ Normal\s+
-匹配一个|
,1+个数字(或完全替换为2),一个空格和Normal,再加上1+倍的空白字符)+
-关闭非捕获组并重复1次以上