结合正则表达式#2

时间:2016-03-21 06:41:05

标签: c# regex

请帮助如何合并以下两个正则表达式

a)@"(?<=\.Value\[)(.*)(?=\])"

上面的正则表达式在.Value之后取出一个子字符串,它会截断&#39; [&#39;和&#39;]&#39;子串中的括号。

b)@"[^\{*\}*$]+"

删除所有&#39; {&#39;和&#39;}&#39;从上面的子字符串的开头和结尾开始括起来。子字符串可以具有零个或多个出现次数的&#39; {&#39;和&#39;}&#39;字符。

E.g。

  

{{服务器/ Y2KCluster1:[] ServerServerStatusState}}值[{{{服务器/ Y2KCluster2:[] ServerServerStatusSecondsTillShutdown}}}]。

应用第一个正则表达式后,它返回

  

[{{{服务器/ Y2KCluster2:[] ServerServerStatusSecondsTillShutdown}}}]

应用第二个正则表达式后,它将返回

  

服务器/ Y2KCluster2:[] ServerServerStatusSecondsTillShutdown

2 个答案:

答案 0 :(得分:2)

以下正则表达式

(?<=\.Value\[)(?:{*)([^}]+)(?=[\]}])

  • .Value[
  • 之后找到子字符串
  • 并贪婪地匹配任意数量的{个字符
  • 贪婪地匹配{1}}字符之前的所有内容 - 在第1组中返回
  • }}字符
  • 之前结束

演示:https://regex101.com/r/mA7pH2/1

答案 1 :(得分:0)

这个正则表达式:

<div class="container" style="position: absolute; top: 34%; left: 1%;"> 
    <table class="table table-bordered" style="width: 85%;"> 
        <thead> 
            <tr> 
                <th>Column A</th> 
                <th>STARTS WITHIN 1 - 15 DAYS</th> 
                <th>STARTS WITHIN 16 - 30 DAYS</th> 
            </tr> 
        </thead> 
        <tbody> 
        <c:forEach var="demand" items="${demands}" varStatus="status"> 
            <tr> 
                 <td>${demand.getSeatJRSS()}</td> 
                 <td> </td> 
                 <td></td> 
            </tr> 
        </c:forEach> 
        </tbody> 
    </table> 
</div>

查找Value 属性的匹配项。然后匹配\.Value\[\{*((?:\[[^\]]*\]|.)*?)}*\] ,后跟任意数量的[然后,这就是工作完成的地方,在捕获组中 - 获取任何

  • { - \[[^\]]*\]后跟任何[(匹配括号 - 在您的示例中只是]

  • []任何字符

重复此非贪婪,直到任意数量.后跟}

结果在第1组中捕获。

此致