如何使用正则表达式更改具有特定值的字符串中的值?
Posted
技术标签:
【中文标题】如何使用正则表达式更改具有特定值的字符串中的值?【英文标题】:how to change values in a string with a particular value using regex? 【发布时间】:2019-07-16 10:08:54 【问题描述】:有一个带有值的df
0 1
0 RS 125 | password1
1 EURO 25 | password2
2 DNR 30 | password3
使用正则表达式如何立即更改这些值,喜欢 RS、EURO、DNR 之后的值应替换为 100
输出应该是
0 1
0 RS 100 | password1
1 EURO 100 | password2
2 DNR 100 | password3
试过了
def Currency(0):
pattern = re.compile("(Rs |EURO |DNR |)")
result = pattern.match(name)
尝试替换匹配的。
【问题讨论】:
【参考方案1】:你可以使用
df['col'] = df['col'].str.replace(r'(?i)((?:Rs|EURO|DNR)\s*)\d+', r'\g<1>100')
或者,如果您想将货币名称作为整个单词进行匹配,请在捕获组前面加上单词边界 \b
:
r'(?i)\b((?:Rs|EURO|DNR)\s*)\d+'
^^
见this regex demo。
详情
(?i)
- 不区分大小写的标志
((?:Rs|EURO|DNR)\s*)
- 第 1 组(替换模式中的\g<1>
指的是这个值):
(?:Rs|EURO|DNR)
- Rs
或 EURO
或 DNR
\s*
- 0+ 个空格
\d+
- 一位或多位数字
请参阅regex demo。
【讨论】:
以上是关于如何使用正则表达式更改具有特定值的字符串中的值?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用正则表达式从熊猫数据框中的一行中的字符串中提取所有特定值?
经典 ASP 中的正则表达式,以确定 URL 是不是具有特定字符串