如果感兴趣的单词是句子的第一个,则很难匹配包含某些单词的整个句子



利用REGEX模式:

[^?!.s][^?!.]*?b([Cc]at|[Dd]og|[Bb]ird)b[^?!.]*[.?!]

将整个句子与上面包含的单词进行匹配,即使该句子跨越多行。

然而,我发现,如果感兴趣的词是句子中的第一个,它将不匹配。

例如:那只鸟死了。将匹配。三伏天结束了。不会。我要找的句子通常在语法上是不完整的,就像第二个列出的一样,但开头是大写,后面是句号结构。

您可以使用

(?=s)[^?!.]*?b([Cc]at|[Dd]og|[Bb]ird)b[^?!.]*[.?!]
b[^?!.]*?b([Cc]at|[Dd]og|[Bb]ird)b[^?!.]*[.?!]

在第一个正则表达式中,第一个匹配的字符必须是非空白字符,因为(?=s)是一个正前瞻,它与紧跟空白字符的位置匹配。

第二变体中的b更具体,并且匹配字符串/非单词字符的开头和单词字符之间的位置,或者单词字符和非单词字符/字符串的结尾之间的位置。

请注意,在JavaScript中,b单词边界不支持Unicode,如果您需要完全的Unicode单词边界支持,则需要一个解决方法,请参阅使用JavaScript替换文本字符串中的某些阿拉伯单词。

相关内容

  • 没有找到相关文章

最新更新