3
저는 파이썬 2.7과 BeautifulSoup을 사용하고 있습니다. abc 또는 a.b.c와 같은 머리 글자를 찾아야합니다. 및 거짓 긍정을 피하십시오 qweabcrty. 패턴은 문자열의 시작 부분에있을 수 있으며 끝에는 공백, 인용 부호, 큰 따옴표, 하이픈 (등등)을 사용할 수 있습니다.약어를 찾고 그 패턴으로 구성된 단어를 피하는 정규 표현식
나는
- ABC
- 주류 통제위원회 소속위한 괜찮이 정규식
[^\w]?a\.?b\.?c\.?[^\w]?
에 와서
- ㅋ (ABC)
- ABC-ㅋ
- 어쩌구 ABC
- ㅋ ABC ㅋ 어쩌구 ABC-ㅋ
는하지만 그것은 또한 발견된다
- qweabcrty
을 제거하면 어떻게됩니까? 둘 다 [^ \ w] 후에 더 이상 사례 1, 2, 4 및 5를 찾지 못합니다. 이전 및/또는 후에 무언가를 찾으려고하기 때문입니다.
길고도 짧은 이야기, 나는이를 지정하는 방법 : ABC 문자열 에 anywere 수 있지만 경우 캐릭터 전 및/또는 영숫자 하나 안 후이있다. 같은
파이썬 코드는 같습니다
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
덕분에, 내가 부탁으로 작동하는 것 같다! 그냥 질문 : 왜 _ (abc | a \. \ b. \ c) _ 대신 _ (a \.? b.?\.c?) _를 사용 했습니까? 더 빠릅니까? – Luca
@ 루카 : 제 견해에서 더 가독성있게 보입니다. – georg