![](/img/trans.png)
[英]Notepad++ regex find results in XML that does not match a certain value
[英]Regex in XML using PHP: find certain value of a certain xml tag
我正在嘗試使用正則表達式獲取某個 xml 標記中某個屬性的值,但無法正確處理,也許有人知道該怎么做?
xml 看起來像這樣:
<OTA_PingRQ>
<Errors>
<Error Code="101" Type="4" Status="NotProcessed" ShortText="Authentication refused">Authentication : login failed</Error>
</Errors>
</OTA_PingRQ>
並且 id 喜歡只匹配 Error 標簽內的 Shorttext 的值。 最后它應該給我"Authentication refused"
。
到目前為止,我嘗試的是使用后向和前瞻,這不允許我采用非固定寬度的量詞。 像那樣(?<=<Error.).*?(?=>)
。 有人能告訴我如何只匹配短文本的值(在錯誤標簽內)嗎?
你沒有指定你正在使用的語言,我可以用 PHP 給你解決方案,反正每種語言的正則表達式都是一樣的。
這是您正在尋找的正則表達式:
#\<Error Code\=\"[0-9]+\" Type\=\"[0-9]+\" Status\=\"NotProcessed\" ShortText\=\"([a-z 0-9]+)\"\>#is
具體 PHP 用途:
$yourOriginalString = '
<OTA_PingRQ>
<Errors>
<Error Code="101" Type="4" Status="NotProcessed" ShortText="Authentication refused">Authentication : login failed</Error>
</Errors>
</OTA_PingRQ>' ;
preg_match_all('#\<Error Code\=\"[0-9]+\" Type\=\"[0-9]+\" Status\=\"NotProcessed\" ShortText\=\"([a-z 0-9]+)\"\>#im', $yourOriginalString, $result) ;
print_r($result) ;
正則表達式 function 將返回一個數組:
[0] => Array
(
[0] => <Error Code="101" Type="4" Status="NotProcessed" ShortText="Authentication refused">
)
[1] => Array
(
[0] => Authentication refused
)
[0] 是完全匹配 [1] 列出匹配捕獲組中的內容:每個 () 在您的正則表達式中設置
一些正則表達式解釋:
Type\=\"[0-9]+\"
假設“類型”可以改變並且是任何數字。
ShortText\=\"([a-z 0-9]+)\"
捕獲字符串字母數字 + 空格字符串。 如果你需要一些其他的東西,你可以像這樣更新:
*[a-z 0-9\!\-]+*
抓住 ! 和 - 太
#is
是標志和忽略 = 大寫和換行符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.