Skip to main content
 首页 » 编程设计

c#之与单行匹配时,正则表达式不匹配多个结果

2024年02月13日28lonelyxmas

有人会用正则表达式吗?..

我正在运行以下正则表达式:

<body>.*</body>     

关于以下文字:

<text>initial text</text> 
 <comment> 
   <user> 
     6 
   </user> 
   <date> 
     635277984371174139 
   </date> 
   <body> 
     Recorded clinical data: 0132.00 Managing director dawd 
   </body> 
 </comment> 
 <comment> 
   <user> 
     6 
   </user> 
   <date> 
     635277984559612059 
   </date> 
   <body> 
     Recorded clinical data: 0132.00 Managing director ii 
   </body> 
 </comment> 
 <comment> 
   <type> 
     Completed 
   </type> 
   <user> 
     6 
   </user> 
   <date> 
     635277984668163579 
   </date> 
   <body> 
     kkk 
   </body> 
 </comment> 

但是,这只会导致一场比赛......我预计会有 3 场比赛......有人知道为什么吗?

请您参考如下方法:

  1. 你不应该用正则表达式解析 HTML(除非 HTML 的琐碎和常量片段),你冒着奇怪的错误的风险:RegEx match open tags except XHTML self-contained tags

  2. 您的正则表达式失败,因为 *是一个贪婪量词。这意味着它将尽可能多地“吃”:这将从第一个 <body> 开始匹配到最后一个,包括里面的。你想要的是

    <body>.*?</body>  
    

    ?使量词非贪婪,它将在第一个匹配处停止。

  3. 您应该编辑您的问题,因为您的 HTML 目前不可读。