我有正则表达式:
(a+)(,)(b+)
分析字符串:aaaa,bbb
对我来说,保持小组$1 , $2, $3.
我需要一个正则表达式用法(仅,没有Js,c#等),它会给我这个:
kkkk,ppp
流程:
1) emit group1 , group2 , group3
2) keep the $2 group
3)replace the 'a' to 'k' ( as many as 'a'.count)
3)replace the 'b' to 'p' ( as many as 'b'.count)
我在Js
中string.replace(regexp/substr,newstring)
没有问题
但我不想要任何循环或类似的东西。
答案 0 :(得分:3)
试试这个:
str.replace(
new RegExp("([ab]+)", "g"),
// Here, we are passing in a nameless function as the parameter for
// the "replace" argument of the String Replace method. It uses the $1
// to refer to the grouping of a or b.
function($1){
if ($1.charAt(0) == "a"){
// replace with k
return( $1.replace(/./g, "k") );
} else {
// replace with p
return( $1.replace(/./g, "p") );
}
}
)
根据自己的需要进行调整。
答案 1 :(得分:2)
正则表达式是一种模式匹配机制。您要求的是模式替换。这可以通过其他语言结构实现,这些结构因语言而异,但不是由正则表达式本身。由于您明确排除任何语言细节,因此您的问题没有答案。
修改强>
好的,现在您已经编辑了问题并允许特定语言的解决方案。见Ed的回答。