我们假设我有以下正则表达式:
-(\d+)-
Run Code Online (Sandbox Code Playgroud)
我想更换,使用C#,1组(\d+)同AA,获得:
-AA-
Run Code Online (Sandbox Code Playgroud)
现在我用以下方法替换它:
var text = "example-123-example";
var pattern = @"-(\d+)-";
var replaced = Regex.Replace(text, pattern, "-AA-");
Run Code Online (Sandbox Code Playgroud)
但我真的不喜欢这个,因为如果我改变模式来匹配_(\d+)_,我也必须改变替换字符串_AA_,这是违反DRY原则的.
我正在寻找类似的东西:
保持匹配的文本的确切方式,但更改组1 this text和组2 another text...
编辑:
这只是一个例子.我只是在寻找一种做我上面所说的通用方法.
它应该适用于:
anything(\d+)more_text 以及你能想象到的任何模式.
我想要做的只是替换组,并保持匹配的其余部分.
如果这些特殊字符粘在一个单词上,如何在Python中创建RE以在这些特殊字符前面添加空格?,?!
这是输入字符串:
myString= 'I like him, but is he good? Maybe he is good , smart, and strong.'
Run Code Online (Sandbox Code Playgroud)
所需的输出(如果特殊字符不粘在单词上,则不会被修改):
modifiedString= 'I like him , but is he good ? Maybe he is good , smart , and strong.'
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个回复:
modifiedString= re.sub('\w,' , ' ,' ,myString)
Run Code Online (Sandbox Code Playgroud)
但它给出了错误的结果。它删除逗号之前的最后一个字符,这是结果示例:
modifiedString = 'I like hi , but is he good? Maybe he is goo , smar , and strong.'
Run Code Online (Sandbox Code Playgroud)
有什么建议可以解决这个问题吗?