我有一个像这样的输入字符串:
\ pard \ nowidctlpar \ qj \ b0 \ scaps这个 达成协议\ scaps0并输入 到这个日期,\ {#DATEAGREEMENT#\}, 之间和之间[删除] (\ ldblquote [removed] \ rdblquote),及其 继承人和/或分配人 地址[删除],和 \ {#TPTPLAINTIFF#\},(\ ldblquote 原告\ rdblquote),个别地, ___________________,和, \ {#TPTPLAINTIFFATTORNEY#\}, (\ ldblquote原告\ rquote s 律师\ rdblquote)的 \ {#TTTATTORNEYFIRM#\}。\ par
我希望用正则表达式进行一些解析。
这是我正在使用的代码:
temp = Regex.Replace(temp, @"\\{#.*#\\}", "_____");
唯一的问题是它匹配最宽的集合,即它取出整个段落,因为段落以“#\}”结尾,我怎样才能匹配每个组? I.E.,这一段应该匹配4次而不是一次。
答案 0 :(得分:4)
你有没有试过让它成为非贪婪的比赛?
temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____");
答案 1 :(得分:1)
temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____");
追加'?'到'*'将执行非贪婪的搜索。你的初始正则表达式正在进行贪婪的搜索,所以它会寻找最大可能的匹配。
答案 2 :(得分:1)
我记得,加上一个?将操作员从贪婪变为非贪婪,所以试试这个:
temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____");
答案 3 :(得分:1)
你正在寻找懒惰的评价:
temp = Regex.Replace(temp, @"\\{#.*?#\\}", "_____");
可能会这样做