根据匹配用替换字符串替换字符串中的正则表达式模式

Posted

技术标签:

【中文标题】根据匹配用替换字符串替换字符串中的正则表达式模式【英文标题】:Replace a regex pattern in a string with a replacement string dependant on the match 【发布时间】:2013-10-24 10:31:51 【问题描述】:

我有一个包含变量的特殊字符串。任何以“@”符号开头的单词都是该字符串中的变量。

示例字符串

这是我的字符串,这是其中的一个@variable。例如,@hello 是 另一个变量

我想执行一个操作,用 %-variable-% 替换此类特殊字符串中的任何通用变量 @-variable-

所以上面的示例 foostring 字符串会变成这样(经过这个操作):

这是我的字符串,这是其中的 %variable%。例如,%hello% 是 另一个变量

问题: 如何使用正则表达式进行此操作?

【问题讨论】:

你用哪种语言实现这个?您已标记 Java、javascript 和 Python! 我正在用 Javascript 实现它。由于它是一个一般性问题(与语言无关),因此最好有多种语言的解决方案,以使不同的读者受益。 【参考方案1】:

在 Javascript 中:

var repl = str.replace(/@(\w+)/g, '%$1%');

在 Java 中:

String repl = str.replaceAll("@(\\w+)", "%$1%");

在python中,为了完整起见

import re
repl = re.sub(r'@(\w+)', r'%\1%', strng)

【讨论】:

哇,我不知道我们有办法在用正则表达式替换时访问匹配的参数。感谢@anubhava 提供有趣的解决方案;对于 python 解决方案,@thg435

以上是关于根据匹配用替换字符串替换字符串中的正则表达式模式的主要内容,如果未能解决你的问题,请参考以下文章

js正则匹配替代指定字符(根据img标签的src中的命名规则,用正则表达式替换成下面格式的文字)

js正则匹配替代指定字符(根据img标签的src中的命名规则,用正则表达式替换成下面格式的文字)

字符串匹配正则表达式模式并替换为匹配的问题

怎样用正则表达式判断字符串中的中文数

C# 如何高效替换一个字符串中的全部某字符?

如何用元组列表替换列表中正则表达式匹配的模式?