我在这里有一个正则表达式:\[link=["](?<href>[^"]+)["]\](?<title>[^\[]+)\[/link\]
和一个替换字符串:<a href=\"${href}\" target=\"_blank\">${title}</a>
需要此字符串[link="http://www.cnn.com"]CNN Webpage[/link]
并将其转换为:<a href="http://www.cnn.com" target="_blank">CNN Webpage</a>
我需要修改它以考虑任一捕获组中的任何前导/尾随空格,并在替换字符串中修剪它们。
例如:[link="http://www.cnn.com "] CNN Webpage[/link]
到<a href="http://www.cnn.com" target="_blank">CNN Webpage</a>
正则表达式不是我的强项。任何帮助表示赞赏!
答案 0 :(得分:2)
您可以通过添加\s*
并将贪婪的[^"]+
变为懒惰[^"]+?
来实现:
\[link="\s*(?<href>[^"]+?)\s*"\]\s*(?<title>[^[]+?)\s*\[/link\]
^ ^ ^ ^ ^ ^
代码:
var rgx = new Regex(@"\[link=""\s*(?<href>[^""]+?)\s*""\]\s*(?<title>[^[]+?)\s*\[/link\]");
var str = "[link=\"http://www.cnn.com \"] CNN Webpage[/link]\n[link=\" http://www.cnn.com\"] CNN Webpage[/link]";
var output = rgx.Replace(str, "<a href=\"${href}\" target=\"_blank\">${title}</a>");