2010-11-14 25 views
0

說明如何使用正則表達式來替換下面如何使用Regex替換XML標籤的參數?

<?xml version="1.0" encoding="UTF-8" ?> 
<games> 
    <game id="1001" path="C:\Program Files\Warcraft III\war3.exe" param="" display="1" priority="0"/> 
</games> 

參數的時值參數的時爲空值我想用正則表達式來添加一些內容。 或用param =「something」替換孔param =「」

它必須是id =「1001」 幫助後的第一個參數。

我也使用autohotkey所以..我不知道你是否可以給我一個代碼來編輯xml與autohotkey。 :P,但正則表達式可以做到這一點。

有人給我提供了這個代碼

RegExReplace(xml,"s)id=""1001"".*?param=""\K[^""]+","HELLO WORLD!") 

它的工作原理,如果帕拉姆具有價值,但如果它不將無法正常工作。 我如何使它工作。

+0

你未能提供您要修改字符串 – 2010-11-14 06:49:06

+0

你失敗,你使用的編程語言(不是所有的正則表達式解析器是等同的)標記這個 – 2010-11-14 06:49:37

+0

什麼。如果param =「」在id =「1001」之前會發生? – 2010-11-14 06:50:05

回答

1

你可以使用這樣的事情,但你應該考慮使用適當的XML解析器,而不是,因爲這個表達式在很多情況下會很容易失敗

s/(id="1001" [^>]*param=").*?"/$1something"/ 
0

你可能會更好看一個XML/HTML解析引擎,假設你在談論XML/HTML params。這些引擎用於解析和修改這類內容 - 正則表達式對於這樣的工作並不理想。

但是它也有助於更多地瞭解你在處理什麼;環境是什麼?這是HTML/XML數據嗎?你在哪裏修改它? (客戶端服務器?)等

0

如果您發佈的作品如你所說的命令,那麼所有你需要做的是改變+*,像這樣:

RegExReplace(xml,"s)id=""1001"".*?param=""\K[^""]*","HELLO WORLD!") 

+的意思是「一個以上; *意味着「零個或多個」

相關問題