我想要捕獲的 XML 檔案中有姓氏,這些姓氏是唯一的。我將從另一個 StackOverflow 答案開始:僅匹配唯一的字串出現我無法匹配我擁有的字串以回傳一個 Adams 和一個 Yellow。
\b(.*<LastName>(.*)<\/LastName>)\b(?![\s\S]*\b\1\b)
<LastName>Adams</LastName>
<LastName>Adams</LastName>
<LastName>Yellow</LastName>
https://regex101.com/r/2wLsm5/1
uj5u.com熱心網友回復:
這對你有用嗎?
/<LastName>(\w )<\/LastName>(?!.*<LastName>\1<\/LastName>)/gsm(注意標志,它們很重要)
演示
問題是您(.*)匹配名稱允許它跨多行匹配。我用它替換了它,\w 所以它只匹配單詞字符(根據您的需要,可能需要更多國際化的東西)。
uj5u.com熱心網友回復:
您可以捕獲標簽的名稱及其內容。
然后在負前瞻中使用反向參考。
.*?對標簽內容的懶惰搜索在這里會有所幫助。
<(LastName)>(.*?)<\/\1>(?![\s\S]*?<\1>\2<\/\1>)
在此處測驗 regex101
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475187.html
標籤:正则表达式
