类似正则表达式的构造,以匹配 %([文本]),其中 [文本] 可以包含转义参数
本文关键字:文本 其中 参数 转义 包含 正则表达式 | 更新日期: 2023-09-27 18:35:04
我正在尝试解析字符串中的标记。
我想要的是这样的输入:
string input = "asdf %(text) %(123) %(a')a) asdf";
我可以通过正则表达式运行它。替换((并使其替换"%(文本(","%(123("和"%(a''(a("。
也就是说,它将匹配起始"%("和结束"("之间的所有内容,除非结束"("被转义。(但是,当然,然后你可以用另一个斜杠来转义斜杠,这样可以防止它逃脱结尾的括号......
我很确定标准正则表达式不能做到这一点,但我想知道 C# 正则表达式库的各种花哨扩展功能是否可以,而不仅仅是完全手动迭代字符串?或者其他可以做到这一点的方法?我觉得这是一个足够常见的程序,鉴于 .net 框架的巨大性,必须有一些方法来解决它而无需从头开始实施解决方案?如果我确实必须实现遍历字符串并替换为字符串。Replace((,我会的,但它看起来很不优雅。
怎么样
var regex = new Regex(@"%'(.*?(?<!'')(?:'''')*')");
var result = regex.Replace(source,"");
-
%'(
匹配文字%(
-
.*?
匹配任何非贪婪的东西 -
(?<!'')
匹配项的前一个字符不得'
-
(?:'''')*
匹配零个或多个文字''
(即匹配转义'
-
')
匹配文字)
这对
我有用:
String something = "'"asdf %(text) %(123) %(a'')a) asdf'";";
String change = something.replaceAll("%''(.*'')", "");
System.out.println(change);
输出
"asdf asdf";