re.sub() 的不区分大小写的正则表达式模式问题[重复]
Posted
技术标签:
【中文标题】re.sub() 的不区分大小写的正则表达式模式问题[重复]【英文标题】:Issue with case-insensitive regex pattern for re.sub() [duplicate] 【发布时间】:2017-12-03 13:00:22 【问题描述】:我正在使用 Python 中的正则表达式进行字典操作。我想从字典项中删除 1dc.com
或 1DC.com
或 1dc.COM
或 1DC.COM
。
示例字典 -
'system_name': 'a1pvdb092', 'fdc_inv_sa_team': 'X2AIX_GBS'
'system_name': 'W00000001.1DC.com', 'fdc_inv_sa_team': 'LAA.BRAZIL.AAA.WINDOWS\n'
'system_name': 'a10000048', 'fdc_inv_sa_team': 'X2AIX_NSS'
'system_name': 'a10000049', 'fdc_inv_sa_team': 'X2AIX_NSS'
预期输出 -
['a1pvdb092']
['W00000001']
['a10000048']
['a10000049']
脚本 -
import re
from opswareConnect import data
for row in data:
arg1 = [row["system_name"],]
arg1 = re.sub('[.1DC.com]\\b', '', str(arg1))
print arg1
脚本的输出 -
['a1pvdb092']
['WBPVAP001Dco']
['a10000048']
['a10000049']
【问题讨论】:
但是[.1DC.com]
是一个字符组...
删除 []
应该可以,更改为 re.sub('.1DC.com\\b', '', str(arg1))
成功了!谢谢@WillemVanOnsem :)
【参考方案1】:
正则表达式
正则表达式是\.1dc\.com
。反斜杠转义通常匹配任何字符而不仅仅是句点的点。
使用re.IGNORECASE 标志使搜索不区分大小写。
使用re.sub()查找并消除目标表达式。
完整解决方案
import re
data = [
'system_name': 'a1pvdb092', 'fdc_inv_sa_team': 'X2AIX_GBS',
'system_name': 'W00000001.1DC.com', 'fdc_inv_sa_team': 'LAA.BRAZIL.AAA.WINDOWS\n',
'system_name': 'a10000048', 'fdc_inv_sa_team': 'X2AIX_NSS',
'system_name': 'a10000049', 'fdc_inv_sa_team': 'X2AIX_NSS',
]
for row in data:
sysname = row['system_name']
print([re.sub(r'\.1dc\.com', '', sysname, flags=re.IGNORECASE)])
输出
['a1pvdb092']
['W00000001']
['a10000048']
['a10000049']
【讨论】:
已修复。感谢您的关注。以上是关于re.sub() 的不区分大小写的正则表达式模式问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章
python 正则表达式re.sub()提取字符串以及去除空格
Python3 爬虫09_正则表达式(re.math()re.search()re.sub()全局匹配函数)