我的正则表达式搜索与句子结尾处的单词匹配。
>>> 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"
仍然会匹配。
答案 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