2010-11-14 3 views
0

Помощи Как использовать регулярное выражение для замены значения пар нижеКак заменить параметр тега XML ... с помощью Regex?

<?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"

и он должен быть первым параметром после id = "1001" справка.

Я также использую autohotkey, так что .. Я не знаю, можете ли вы просто предоставить мне код для редактирования xml с помощью autohotkey. : P, но regex сделал бы для этого.

кто предоставил мне с этим кодом

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

это работает, если парам имеет значение, но это не будет работать, если он этого не делает. как я могу заставить его работать.

+0

0: –

+0

Вы не указали это с помощью языка программирования, который вы используете (не все парсеры регулярных выражений эквивалентны). –

+0

произойдет, если param = "" до id = "1001"? –

ответ

1

Вы могли бы использовать что-то вроде этого, но вам следует использовать правильный XML парсер вместо, так как это регулярное выражение легко неудачу во многих случаях:

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

Вы могли бы быть лучше, глядя на механизм XML-анализа XML/HTML здесь, предполагая, что вы говорите о параметрах XML/HTML. Такие двигатели созданы для синтаксического анализа и модификации такого рода контента - регулярные выражения вовсе не идеальны для такой работы.

Но это поможет узнать больше о том, с чем вы имеете дело; какова среда? Это данные HTML/XML? Где вы его модифицируете? (Клиент-сервер?) И т.д.

0

Если команда, которую вы размещены работы, как вы сказали, то все, что вам нужно сделать, это изменить + к *, например, так:

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

+ означает «один или больше: * означает «ноль или больше»