基本上,我想这样做:
文本和文本文本。文本的文本。和文本。(不要匹配这个"And.")
文本和文本文本。和文本。(匹配这个"And.")
现在,我有这个正则表达式:.*b(and)b.*. And
。但是它匹配上面示例中的两个And
: https://regexr.com/65k52
如何修改这个正则表达式,使它只匹配And
,如果前面的句子有and
?
如果您想使用.
+空格作为句子分隔符序列,您可以使用
(?=S)[^.]*(?:.(?!s)[^.]*)*?bandb[^.]*(?:.(?!s)[^.]*)*.s+Andb
(?=S)(?:[^.]|.(?!s))*?bandb(?:[^.]|.(?!s))*.s+Andb
参见regex demo #1和regex demo #2。细节:
(?=S)
-下一个字符必须为非空格(?:[^.]|.(?!s))*?
-零次或多次(但尽可能少)出现除.
或.
以外的任何一个字符,且后面没有紧接空格bandb
-全字and
(?:[^.]|.(?!s))*
-零次或多次(但尽可能多)出现除.
或.
以外的任何一个字符,并且后面没有紧接空格.
- a点s+
-一个或多个空白Andb
- a whole wordAnd
.