我有正则表达式https://regex101.com/r/2H5ew6/1
(\!|\@)(1)
Hello!1 World
我想拿第一分!|@)并将数字1
更改为另一个数字2
{\1}2_
\1\\2_
但它添加了额外的文本,我只是想改变数字
我希望结果是
Hello!2_World
如果“是”
Hello@2_World
我有正则表达式https://regex101.com/r/2H5ew6/1
(\!|\@)(1)
Hello!1 World
我想拿第一分!|@)并将数字1
更改为另一个数字2
{\1}2_
\1\\2_
但它添加了额外的文本,我只是想改变数字
我希望结果是
Hello!2_World
如果“是”
Hello@2_World
4条答案
按热度按时间fv2wmkja1#
匹配并捕获命名捕获组(此处称为
char
)中的!
或@
(如果后面跟有一个或多个数字和一个空格):替换为指定的捕获,
\g<char>
后跟2_
:Demo
如果您只希望在
!
或@
后面有1
时进行替换,请将\d+
替换为1
。zour9fqk2#
在替换中,您需要将
{\1}2_
更改为2_
。y1aodyip3#
为什么不:
string.replace('!1 ', '!2_').replace('@1 ', '@2_')
?scyqe7ek4#
替换模式应为
\g<1>2_
Regex demo
您还可以将模式缩短为包含character class
[!@]
和match的单个捕获,并使用与上面相同的替换。([!@])1
Regex demo
或者使用不带任何组的lookbehindAssert,并替换为
2_
(?<=[!@])1
Regex demo