开发者

Regex to match not start of line

开发者 https://www.devze.com 2023-03-15 07:47 出处:网络
I have the following XML开发者_如何学Go tag <list message=\"2 < 3\"> I want to replace the < in the text with &lt;

I have the following XML开发者_如何学Go tag

<list message="2 < 3">

I want to replace the < in the text with &lt;

Need a regex to match < if it doesn't appear at the start of line.


Most likely you can do this using lookbehind:

/(?<!^)</

see: http://www.regular-expressions.info/lookaround.html


[^<]+ = one or more characters that are not <

< = the < you're looking for

replace:

([^<]+)<

with:

$1&lt;


The dot '.' means "any value"

.<

Anyway, I suppose you don't want whitespaces, either. If so, then

\S\s*<


This would give you "<" after the first instance:

[^<]<


Try this:

(?<="[^"]*)<(?=[^"]*")


@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(/(?!^)</, '&lt;')

0

精彩评论

暂无评论...
验证码 换一张
取 消