2014-06-17 48 views
-1

我想獲得您的幫助,找出.NET正則表達式出了什麼問題。我有成千上萬的這種表情,但我完全被困在修復這個簡單的表情。修復此.NET正則表達式

正則表達式如下:

(?isx) 
      <Field 
       (
        \s+ 
        | 
        name = "(?<name> [^"]*?)" 
        | 
        type = "(?<type> [^"]*?)" 
        | 
        value = "(?<value> [^"]*?)" 
       )+ 
      >‭ 
       (?<content> .*?) 
      </Field> 

事情要趕都是這樣的人XML部分:

<Field name="SolutionList/0/ModuleType" type="Enumeration" value="StartSectionModule"></Field> 
<Field name="SolutionList/0/StartSectionModule/Title" type="String">Áttekintés</Field> 
<Field name="SolutionList/0/TextModule/HtmlContent" type="RichContent"><![CDATA[]]></Field> 

現在無論我如何努力簡化一步的表現步驟試圖找到越野車部分,我幾個小時內無法實現任何相關進展。

謝謝你的時間,夥計。

回答

0

除了所有關於正則表達式解析HTML的警告......

有一個小的間距問題。

我把它從自由空間模式中取出。這個平坦的正則表達式現在可以工作:

(?s)<Field(\s+|name="(?<name>[^"]*?)"|type="(?<type>[^"]*?)"|value="(?<value>[^"]*?)")+>(?<content>.*?)</Field> 

既然你寫了,我就不會給你解釋了!

0

您的第一個>後有left-to-right隱形字符。刪除它和you'll be fine

此外,你應該避免(\s+)+型的情況,以避免災難性的回溯:

(?isx) 
    <Field 
     (?: 
      \s+ 
      (?: 
       name = "(?<name> [^"]*?)" 
       | 
       type = "(?<type> [^"]*?)" 
       | 
       value = "(?<value> [^"]*?)" 
      ) 
     )+ 
    > 
    (?<content> .*?) 
    </Field>