如何用Python正则表达式匹配regular expression的多分隔符变体?
解决正则匹配多种变体的问题
没问题,我来帮你搞定这个正则匹配需求!你要匹配的是regular和expression之间用**空格、连字符(-)、冒号(:)、或者HTML实体&**分隔的所有变体,直接用带选择分支的正则就能轻松实现。
具体实现代码
import re target_str = "This is a string to search for a regular expression like regular expression or regular-expression or regular:expression or regular&expression" # 用非捕获组(?:...)匹配可选分隔符,避免捕获额外的分隔符内容 pattern = r'regular(?: |-|:|&)expression' matches = re.findall(pattern, target_str) print(matches)
运行结果
['regular expression', 'regular-expression', 'regular:expression', 'regular&expression']
正则表达式拆解
让我把这个正则的逻辑拆解开给你看:
regular:精确匹配字面量字符串"regular"(?: |-|:|&):这是一个非捕获组,里面的|代表“或”的逻辑,用来匹配四种可选分隔符::空格字符-:连字符::冒号&:HTML实体形式的&符号
expression:精确匹配字面量字符串"expression"
扩展小技巧
如果之后需要支持更多分隔符变体,只需要在非捕获组里继续添加|新分隔符即可。比如要支持下划线分隔的regular_expression,直接把正则改成r'regular(?: |-|:|&|_)expression'就行。
内容的提问来源于stack exchange,提问作者Carigs
相关产品推荐
相关产品推荐

