我要在字符串中查找与特定模式匹配的单词。 问题是,如果这些词是电子邮件地址的一部分,它们应该被忽略。
为简化起见,“专有词”的模式\w+\.\w+
- 一个或多个字符、一个实际句点和另一系列字符。
例如,引起问题的句子是a.a b.b:c.c d.d@e.e.e
.
目标是只匹配[a.a, b.b, c.c]
.对于我构建的大多数正则表达式,e.e
也返回(因为我使用了一些单词边界匹配)。
例如:
>>> re.findall(r"(?:^|\s|\W)(?<!@)(\w+\.\w+)(?!@)\b", "a.a b.b:c.c d.d@e.e.e")
['a.a', 'b.b', 'c.c', 'e.e']
如何只匹配不包含“@”的单词?
最佳答案
我肯定会先清理它并简化正则表达式。
首先我们有
words = re.split(r':|\s', "a.a b.b:c.c d.d@e.e.e")
然后过滤掉其中有@
的单词。
words = [re.search(r'^((?!@).)*$', word) for word in words]
关于python - 正则表达式 - 匹配模式中的单词,电子邮件地址除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45441544/