私は python 2.7 とBeautifulSoupを使用しています。abcやabcなどの頭字語を見つけて、qweabcrtyのような誤検知を避ける必要があります。パターンは、文字列の先頭、末尾、前後にスペース、引用符、二重引用符、ハイフン (など) を使用できますが、英数字は使用できません。
私はこの正規表現に来ます
[^\w]?a\.?b\.?c\.?[^\w]?
それは大丈夫です
- abc
- abc
- 何とか(abc)
- なんとなく
- なんてこった
- 何とか何とか何とか
- 何とか何とか
しかし、それも見つかりました(そして、私はしたくありません):
- qweabcrty
?を削除すると、? 両方の[^\w]の後、ケース 1、2、4、および 5 は検出されません。
簡単に言えば、これをどのように指定できますか: abc は文字列内の任意の場所に配置できますが、その前後に文字がある場合は、英数字であってはなりません。
Python コードは次のようになります。
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