微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python regex中将1个单词限制为区分大小写,其他限制为不区分大小写 管

如何解决在python regex中将1个单词限制为区分大小写,其他限制为不区分大小写 管

在Python 3.6及更高版本中,您可以使用内联修饰符组

>>> s = "Welcome to PuNe, Maharashtra"
>>> print(re.findall(r"PuNe|(?i:MaHaraShTrA)",s))
['PuNe', 'Maharashtra']

请参阅相关的Pythonre文档

(?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(Unicode匹配)和re.X(详细)。(这些标志在模块内容中描述。)

这些信件'a''L''u'为内联标志使用时,所以他们不能合并或者按照相互排斥'-'。而是,当其中一个出现在内联组中时,它将覆盖封闭组中的匹配模式。在Unicode模式中,(?a:...)切换到仅ASCII匹配,然后(?u:...)切换到Unicode匹配(认)。在字节模式中,(?L:...)切换到取决于语言环境的匹配,并(?a:...)切换到仅ASCII匹配(认)。此替代仅对狭窄的内联组有效,并且原始匹配模式在组外恢复。

_3.6版的新功能

在3.7版中进行了更改:字母“ a”,“ L”和“ u”也可以在一个组中使用。_

不幸的是,re3.6之前的Python版本不支持这些组,也不支持交替启用和禁用内联修饰符。

如果可以使用PyPi regex模块可以使用以下(?i:...)结构:

import regex
s = "Welcome to PuNe, Maharashtra"
print(regex.findall(r"PuNe|(?i:MaHaraShTrA)",s))

请参阅在线Python演示

解决方法

|在regex,Python中有了(管道特殊字符)的含义。它匹配第一个或第二个。

ex:a|b 匹配a或b。

我的问题: 如果我想比赛有什么a用大小写敏感的,b在上面的例子中不区分大小写?

例如:

s = "Welcome to PuNe,Maharashtra"

result1 = re.search("punnee|MaHaRaShTrA",s)
result2 = re.search("pune|maharashtra",s)
result3 = re.search("PuNe|MaHaRaShTrA",s)
result4 = re.search("P|MaHaRaShTrA",s)

我想按照上述声明(s即)的方式搜索Pune
PuNe。但是我必须忽略大小写来搜索马哈拉施特拉邦。如何搜索区分大小写的1个单词和不区分大小写的另一个单词?这样,result1result2result3result4将给予not null价值。

我想

result1 = re.search("pune|MaHaRaShTrA",s1,re.IGNORECASE)

但这忽略了两个词的情况。

如何限制一个单词区分大小写而另一个不区分大小写?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。