在Python 3.6及更高版本中,您可以使用内联修饰符组:
>>> s = "Welcome to PuNe, Maharashtra">>> print(re.findall(r"PuNe|(?i:MaHaRaShTrA)",s))['PuNe', 'Maharashtra']
请参阅相关的Python
re文档:
(?aiLmsux-imsx:...)(零或从所述一组多个字母
'a','i','L','m','s','u','x',任选接着进行'-'随后从一个或多个字母'i','m','s','x'。)中的字母设置或移除对应的标志:re.A(只有ASCII匹配),re.I(忽略大小写),re.L(取决于语言环境),re.M(多行),re.S(所有点都匹配),re.U(Unipre匹配)和re.X(详细)。(这些标志在模块内容中描述。)这些信件
'a','L'并'u'为内联标志使用时,所以他们不能合并或者按照相互排斥'-'。而是,当其中一个出现在内联组中时,它将覆盖封闭组中的匹配模式。在Unipre模式中,(?a:...)切换到仅ASCII匹配,然后(?u:...)切换到Unipre匹配(默认)。在字节模式中,(?L:...)切换到取决于语言环境的匹配,并(?a:...)切换到仅ASCII匹配(默认)。此替代仅对狭窄的内联组有效,并且原始匹配模式在组外恢复。_3.6版的新功能。
在3.7版中进行了更改:字母“ a”,“ L”和“ u”也可以在一个组中使用。_
不幸的是,
re3.6之前的Python版本不支持这些组,也不支持交替启用和禁用内联修饰符。
如果可以使用PyPi
regex模块,则可以使用以下
(?i:...)结构:
import regexs = "Welcome to PuNe, Maharashtra"print(regex.findall(r"PuNe|(?i:MaHaRaShTrA)",s))
请参阅在线Python演示。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)