2

Well, I am trying to apply some regular expression(search/replace) on xml. Yes I have to use some lib.'s but in that case I cannot. My problem is ,as you may figure out, replacing value of node with an integer. When I try that, it gives me grouping error.Here are my patterns:

search pattern:

(<fieldset>)([^>].+)(<ipadd>)([^>].+)(<value>)([^>].+)(</value>)([^>].+)(</ipadd>)([^>].+)(</fieldset>)

replace pattern:

\1\2\3\4\5123.123.123.123\7\8\9\10\11

As you see fifth group becomes "\5123" in replace pattern. And of course it doesn't work.

Well if I use something like this:

\1\2\3\4\5 123.123.123.123\7\8\9\10\11

It works. But I don't want a space or something else there.

And it also work with string:

\1\2\3\4\5foofoofoo\7\8\9\10\11

ah I am using re.sub() for replacing.

Is there a way that I can use it without spaces?

Thanks everyone

1 Answer 1

2

From Python Regular Expression operations - re.sub(pattern, repl, string[, count, flags])

In addition to character escapes and backreferences as described above, \g<name> will use the substring matched by the group named name, as defined by the (?P<name>...) syntax. \g<number> uses the corresponding group number; \g<2> is therefore equivalent to \2, but isn’t ambiguous in a replacement such as \g<2>0. \20 would be interpreted as a reference to group 20, not a reference to group 2 followed by the literal character '0'. The backreference \g<0> substitutes in the entire substring matched by the RE.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.