2009-04-23 134 views
3

我有以下形式的XML文件:正則表達式替換XML屬性

<property name="foo" value="this is a long value">stuff</property> 

有許多特性,但我想匹配一個一個名爲foo,然後用別的東西作爲替代它的價值屬性所以:

<property name="foo" value="yet another long value">stuff</property> 

我想編寫一個正則表達式「富」的標籤(「>」)結束後,以配合一切和替換,但我似乎無法得到正確的語法。

我想用sed來做這個,如果有什麼幫助的話。

回答

7

/property name=\"foo\" value=\"([^\"]*)\"/

然後,只需用你希望的新值替換第一個子匹配。

5

您可能不想使用正則表達式來操作xml文件。請考慮xslt,它知道xml規則,並且不會導致您的轉換文檔變得格式不正確。

+0

儘管我一般同意這一點,但我並未使用此代碼來處理交易。相反,我只是想修改一個構建配置文件,它可以讓我更改about box的內容。我想做所有這些都作爲bash腳本的一部分,寫一個XSL是矯枉過正的。 – Daniel 2009-04-23 06:19:23

+0

@Daniel:如果你指定了更多的需求,你可能會發現XSL轉換改變一個屬性比你想象的要困難得多。 – Tomalak 2009-04-23 06:43:09