I have the following XML tag
I want to replace the <
in the text with <
[^<]+
= one or more characters that are not <
<
= the < you're looking for
replace:
([^<]+)<
with:
$1<
This would give you "<" after the first instance:
[^<]<
Try this:
(?<="[^"]*)<(?=[^"]*")
The dot '.' means "any value"
.<
Anyway, I suppose you don't want whitespaces, either. If so, then
\S\s*<
@duncan's method works fine if you just want to replacing, but it doesn't match the <
.
and all the lookbehind wont work if you a using javascript. because javascript doesn't support lookbehind, unless you turn on the --harmony
flag in nodejs or experimental javascript features in chrome.
But lookahead will work here, which is:
/(?!^)</
will match the <
which is not at the begining of a line.
and the replacing will be:
'<list message="2 < 3">'.replace(/(?!^)</, '<')
Most likely you can do this using lookbehind:
/(?<!^)</
see: http://www.regular-expressions.info/lookaround.html