匹配单词,但忽略句子结尾单词

时间:2018-07-11 16:52:14

标签: python regex

我的正则表达式搜索与句子结尾处的单词匹配。

>>> needle = 'miss'
>>> needle_regex = r"\b" + needle + r"\b"
>>> haystack = 'Cleveland, Miss. - This is the article'
>>> re.search(needle_regex, haystack, re.IGNORECASE)
<_sre.SRE_Match object; span=(10, 14), match='Miss'>

在这种情况下,“小姐”。实际上是密西西比州的简称,不是比赛。如何忽略句子结尾的单词,但又要确保

>>> haystack = "Website Miss.com some more text here"

仍然会匹配。

1 个答案:

答案 0 :(得分:1)

如上所述,语言是模糊的,而正则表达式不是自然的语言处理工具。一种可行的解决方案是使用正则表达式\p{P} Unicode category排除带有标点符号的匹配项,并在其后加上一个空格,例如

SELECT STRING_AGG (X + ',' + Y, ',') AS XYLIST
FROM POINTS

Demo * PCRE

但是,要利用\ p {}语法利用Unicode代码点属性,我们必须使用支持该功能的regex模块(标准re模块的替代方法)。

代码示例:

(?!\bmiss\p{P}\s)\bmiss\b