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

标签 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>

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

最佳答案

您可以通过添加 \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

关于c# - 伪代码的正则表达式 - 修剪间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30783056/

相关文章:

c# - 在多线程中调用静态方法

c# - 重新排序集合 C#

regex - 每个正则表达式解析和替换嵌套匹配

javascript - Internet Explorer 中的多行 js 正则表达式替换

r - 使用 R 中的 RegEx 以 Mon、DD、YYYY 格式解析日期

c# - 使用 Visual Studio 的代码模型查找类的更快方法是什么?

c# - C# 中的数据表

c# - 使用 If 、 Else if 比较多个值

python - 正则表达式查找和删除 ABC 或 A.B.C 的缩写

python - 从字符串中提取信息