Regular Expression search in python if condition
我试图在链接中搜索整个单词pid,但在某种程度上,这也是在代码中搜索id。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | for a in self.soup.find_all(href=True): if 'pid' in a['href']: href = a['href'] if not href or len(href) <= 1: continue elif 'javascript:' in href.lower(): continue else: href = href.strip() if href[0] == '/': href = (domain_link + href).strip() elif href[:4] == 'http': href = href.strip() elif href[0] != '/' and href[:4] != 'http': href = ( domain_link + '/' + href ).strip() if '#' in href: indx = href.index('#') href = href[:indx].strip() if href in links: continue links.append(self.re_encode(href)) |
如果您的意思是希望它匹配一个字符串,如
1 2 3 4 | >>> re.search(r'\Wpid\W', '/pid/0002') <_sre.SRE_Match object; span=(0, 5), match='/pid/'> >>> re.search(r'\Wpid\W', '/rapid/123') None |
如果"pid"可能在字符串的开头或结尾,则需要添加额外的条件:检查行的开头/结尾或非字字符:
1 2 | >>> re.search(r'(^|\W)pid($|\W)', 'pid/123') <_sre.SRE_Match object; span=(0, 4), match='pid/'> |
有关特殊字符的更多信息,请参阅文档。
你可以这样使用它:
1 2 3 | pattern = re.compile(r'(^|\W)pid($|\W)') if pattern.search(a['href']) is not None: ... |