伪代码的正则表达式 - 修剪间距

时间:2015-06-11 14:02:24

标签: c# regex

我在这里有一个正则表达式:\[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>

正则表达式不是我的强项。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

您可以通过添加\s*并将贪婪的[^"]+变为懒惰[^"]+?来实现:

\[link="\s*(?<href>[^"]+?)\s*"\]\s*(?<title>[^[]+?)\s*\[/link\]
         ^              ^  ^     ^               ^  ^ 

请参阅demo on regexstorm

代码:

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>");

enter image description here

相关问题