我有以下格式的字符串
some other string @[Foo Foo](contact:2) some other string @[Bar Bar](contact:1) still some other string
现在我想把这个字符串变成
some other string <a href="someurl/2">Foo Foo</a> some other string <a href="someurl/1">Bar Bar</a> still some other string
所以基本上需要使用groovy&amp;使用reg ex将@[Some name](contact:id)
替换为url这是有效的方法吗
答案 0 :(得分:11)
您可以将Groovy replaceAll
String方法与分组正则表达式一起使用:
"some other string @[Foo Foo](contact:2) some other string @[Bar Bar](contact:1) still some other string"
.replaceAll(/@\[([^]]*)]\(contact:(\d+)\)/){ all, text, contact ->
"<a href=\"someurl/${contact}\">${text}</a>"
}
/@\[([^]]*)]\(contact:(\d+)\)/
=〜@[Foo Foo](contact:2)
/
开始正则表达式模式
@
匹配@
\[
匹配[
(
开始文字组
[^]]*
匹配Foo Foo
)
结束文字组
]
匹配]
\(contact:
匹配(contact:
(
开始联系组
\d+
匹配2
)
结束联系组
\)
匹配)
/
结束正则表达式模式
答案 1 :(得分:1)
你没有提到编程语言,但一般假设语言以某种方式调用regexp语法:
s/@\[([^\]]+)\]\([^:]+:([0-9]+)\)/<a href="someurl\/$2">$1<\/a>/g
这在大多数正则表达式语言中都有效。例如,它在perl中工作(虽然我正在逃避特殊的@字符,这意味着在perl中:
#echo "some other string @[Foo Foo](contact:2) some other string @[Bar Bar](contact:1) still some other string" | perl -p -e 's/\@\[([^\]]+)\]\([^:]+:([0-9]+)\)/<a href="someurl\/$2">$1<\/a>/g'
some other string <a href="someurl/2">Foo Foo</a> some other string <a href="someurl/1">Bar Bar</a> still some other string