【发布时间】:2019-11-22 00:41:19
【问题描述】:
试图用正则表达式替换字符串,但没有成功。
字符串是“LIVE_CUS2_PHLR182”、“LIVE_CUS2ee_PHLR182”和“PHLR182 - 测试恢复”。这里我需要将 PHLR182 作为所有字符串的输出,但第二个字符串的“ee”不是恒定的。它可以是带有 2 个字符的字符串或数字。下面是我尝试过的代码。
对于第一个和最后一个字符串,我只是简单地使用了replace 函数,如下所示。
s = "LIVE_CUS2_PHLR182"
s.replace("LIVE_CUS2_", ""), s.replace(" - testing recovery","")
>>> PHLR182
但我第二次尝试如下。
1. s= "LIVE_CUS2ee_PHLR182"
s.replace(r'LIVE_CUS2(\w+)*_','')
2. batRegex = re.compile(r'LIVE_CUS2(\w+)*_PHLR182')
mo2 = batRegex.search('LIVE_CUS2dd_PHLR182')
mo2.group()
3. re.sub(r'LIVE_CUS2(?is)/s+_PHLR182', '', r)
在所有情况下,我都无法将“PHLR182”作为输出。请帮帮我。
【问题讨论】:
-
如果你想用正则表达式替换,你需要使用
re.sub,而不是s.replace -
为什么不
"LIVE_CUS2ee_PHLR182".split('_')[-1]? -
@Keatinge 我也尝试过 re.sub
-
@lalithkumar,当需要作为输出/结果时,您的模式中包含明确的
PHLR182是没有意义的 -
使用
re.search(r'[^_\s]+(?=\s|$)',s)怎么样