我无法将几个不同的正则表达式放在一起来做我需要的事情。说我有文字:
这是第一句。这是第二句!这是三个。这是四个。百事可乐中间句在这里是五个。给你六个?这是七个!第八句来了。九是最后一个。
我想把里面有“百事可乐”的句子和前三个和后三个抽出来:
这是第二句!这是三个。这是四个。百事可乐中间句在这里是五个。给你六个?这是七个!第八句来了。
这可以拉出百事可乐的句子:
(?i)((?=[^.\n]*\bpepsi\b)[^.\n]+\.?)
这样就可以抽出pepsi句子和下面三个句子:
(?i)(?m)(?s)((((?=[^.?!\n]*\bpepsi\b)[^.\n]+[.?!]?){1})((?:\\s[a-z]\\.(?:[a-z]\\.)?|.)+?[.?!]+){3})
但我不知道如何拔出前三个。我可以拉出前三个:
(?i)(?m)(?s)((?:\\s[a-z]\\.(?:[a-z]\\.)?|.)+?[.?!]+){3}
但是当我尝试做百事可乐句子和前三个时,就是做不到......
而且我开始怀疑正则表达式是否是一个不错的选择,因为 html 可能会在句子中混合。我认为这些正则表达式会没问题,但我不确定。