簡體   English   中英

為此有正則表達式嗎?

[英]Is there a regular expression for this?

找到正則表達式時遇到問題。 我有一些文本,也許除以一些xml。 例如:

<root>
  <text>Thi</text>
  <text>s is ju</text>
  <text><bold>s</bold></text>
  <text>t a tes</text>
  <text><italic>t</italic></text>
</root>

我想在xml中搜索單詞“ just”,並需要結果

ju</text>
<text><bold>s</bold></text>
<text>t

是否有可能通過正則表達式獲得此結果?

順便說一句:我已經有了正則表達式來從xml中獲取純文本,它是(在C#語法中):

string plaintext = new Regex(@"\<[^\<]*\>").Replace(xmlstring, string.Empty);

該函數找到每個“ <”到“>”之間的所有內容(*),但沒有另一個“ <”並將其替換為string.Empty。 因此,我得到純文本並可以搜索我的“ just”,但結果將只是“ just”,而不是介於兩者之間的xml ...

有人有主意嗎?

如果您在單行中有XML(沒有空格),則可以通過just(?:<[^>]*>)*正則表達式部分分割字母來創建正則表達式。 例:

j(?:<[^>]*>)*u(?:<[^>]*>)*s(?:<[^>]*>)*t

如果仍然需要處理多行xml,則可以通過(?! )(?:<[^>]*>\\s*)*(?<! ) 它會在XML標簽之間允許使用空格,但不允許在字母之前或之后使用空格。

j(?! )(?:<[^>]*>\s*)*(?<! )u(?! )(?:<[^>]*>\s*)*(?<! )s(?! )(?:<[^>]*>\s*)*(?<! )t

最好不要在XML上使用regexp。 只是不要。

根據您的任務,在您要查找的字符串的每個字符之后,可以包含任何xml標記。 因此,基本上,您需要在每個字母之后插入“ maybetag”正則表達式部分-像這樣:

j(\<[^\<]*?\>\s*)*u(\<[^\<]*?\>\s*)*s(\<[^\<]*?\>\s*)*t(\<[^\<]*?\>\s*)*

工作示例http://www.rexfiddle.net/WdkpliZ

嘗試這個:

/j(<[^>]+>)*u(<[^>]+>)*s(<[^>]+>)*t/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM