【问题标题】:Regular Expression for Pseudocode - Trim Spacing伪代码的正则表达式 - 修剪间距
【发布时间】:2015-06-11 14:02:24
【问题描述】:

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

Regex 不是我的强项。任何帮助表示赞赏!

【问题讨论】:

    标签: c# regex


    【解决方案1】:

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

    【讨论】:

    • 完美回答,并且有帮助的解释。谢谢!
    猜你喜欢
    • 2021-09-20
    • 2016-02-05
    • 1970-01-01
    • 2014-01-12
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多