簡體   English   中英

使用記事本++中的正則表達式在xml標簽中的字符串中查找特定單詞?

[英]Find specific word inside a string in xml tag using regex in notepad++?

<name>我的名字是湯姆,但人們稱我為 XYZ,但我的實際名字是湯米! </name >

  • 現在,我想在指定的 xml 標簽中找到“Tom”,並將其替換為 Harry。
  • 從指定的 XML 標記內的字符串中查找“Tom”的多個實例並將其替換為“Harry”。

示例: (?<=<name>)[a-zA-Z]*(Tom)[a-zA-Z]*(?=<\\/name>) ,

  • 這無法從 XML 標記之間的指定字符串中找到單詞“Tom”。

找出什么: (?<=<name>)(.*?)(Tom)(?=\\b.*</name>)
替換為: $1Harry

細節 :
巴利斯名稱: (?<=<name>)
name 和 Tom (.*?)之間的任何內容
湯姆(Tom)
檢查單詞 Tom (?=\\b
湯姆和結束名字之間的任何東西 balise .*
閉幕式</name>)

重新注入 balise 名稱和 tom 之間的內容$1
哈里更換湯姆· Harry

由於name標簽內部不能有任何其他標簽,因此可以解決問題的正則表達式是

(?:\G(?!^)|<name>)[^<]*?\K\bTom\b

請參閱正則表達式演示 替換為Harry

細節

  • (?:\\G(?!^)|<name>) - 前一個成功匹配的結尾 ( \\G(?!^) ) 或 ( | ) <name>子字符串
  • [^<]*? - 除<之外的任何 0+ 個字符,盡可能少
  • \\K - 匹配重置運算符
  • \\bTom\\b - 整個單詞Tom (如果需要匹配Tommy中的Tom ,請刪除\\b單詞邊界)。

注意:如果您還想匹配Tommy ,請將\\bTom\\b替換為\\bTom(?:my)?\\b

暫無
暫無

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

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