Python 用于查找首字母缩略词并避免由该模式组成的单词的正则表达式
我正在使用python 2.7和。 我需要找到一个缩写词,如abc或a.b.c.,并避免像qweabcrty这样的假阳性。该模式可以位于字符串的开头,也可以位于字符串的结尾,可以在前后有空格、引号、双引号、连字符(等等),但不能是字母数字字符 我来到这个正则表达式Python 用于查找首字母缩略词并避免由该模式组成的单词的正则表达式,python,regex,beautifulsoup,regex-negation,Python,Regex,Beautifulsoup,Regex Negation,我正在使用python 2.7和。 我需要找到一个缩写词,如abc或a.b.c.,并避免像qweabcrty这样的假阳性。该模式可以位于字符串的开头,也可以位于字符串的结尾,可以在前后有空格、引号、双引号、连字符(等等),但不能是字母数字字符 我来到这个正则表达式 [^\w]?a\.?b\.?c\.?[^\w]? 这对我来说没关系 abc a、 不列颠哥伦比亚省 废话(abc) abc废话 废话 废话 废话 但它也被发现(我不想): qweabcrty 如果我移除了这个按钮?在这两个[
[^\w]?a\.?b\.?c\.?[^\w]?
这对我来说没关系
- abc
- a、 不列颠哥伦比亚省
- 废话(abc)
- abc废话
- 废话
- 废话
- 废话
- qweabcrty
import re
from bs4 import BeautifulSoup, SoupStrainer
html = """
<html>
<a>abc</a>
<a>a.b.c.</a>
<a>blah (abc)</a>
<a>abc-blah</a>
<a>blah-abc</a>
<a>blah abc blah</a>
<a>blah-abc-blah</a>
<a>qweabcrty</a>
</html>"""
links = BeautifulSoup(html, "lxml", parse_only=SoupStrainer(["a"]))
tags = links.find_all("a", text = re.compile("[^\w]?a\.?b\.?c\.?[^\w]?", re.I))
print tags
重新导入
来自bs4进口美容集团,SoupStrainer
html=”“”
abc
a、 不列颠哥伦比亚省。
废话(abc)
abc废话
废话
废话
废话
qweabcrty
"""
links=BeautifulSoup(html,“lxml”,仅解析=SoupStrainer([“a”]))
tags=links.find_all(“a”,text=re.compile([^\w]?a\.?b\.?c\.?[^\w]?”,re.I))
打印标签
尝试使用单词边界(\b
)元字符:
html = """
<html>
<a>abc</a>
<a>a.b.c.</a>
<a>blah (abc)</a>
<a>abc-blah</a>
<a>blah-abc</a>
<a>blah abc blah</a>
<a>blah-abc-blah</a>
<a>qweabcrty</a>
</html>"""
import re
print re.sub(r'\b(abc|a\.\b.\.c)\b', '@@@', html)
html=”“”
abc
a、 不列颠哥伦比亚省。
废话(abc)
abc废话
废话
废话
废话
qweabcrty
"""
进口稀土
打印re.sub(r'\b(abc | a\.\b.\.c)\b','@@@@',html)
印刷品
<html>
<a>@@@</a>
<a>@@@.</a>
<a>blah (@@@)</a>
<a>@@@-blah</a>
<a>blah-@@@</a>
<a>blah @@@ blah</a>
<a>blah-@@@-blah</a>
<a>qweabcrty</a>
</html>
@@@
@@@.
胡说八道(@@@1)
@@@-废话
废话-@@@
诸如此类
废话-@@@@@废话
qweabcrty
谢谢,好像我问的那样有效!只是一个问题:你为什么用(abc a\.\b.\.c)而不是(a\.\b.\c?)呢?更快?