正则表达式匹配不开始行

时间:2011-06-23 08:44:51

标签: regex

我有以下XML标记

<list message="2 < 3">

我想用<

替换文本中的&lt;

如果没有出现在行首,则需要正则表达式匹配<

6 个答案:

答案 0 :(得分:30)

很可能你可以使用lookbehind来做到这一点:

/(?<!^)</

请参阅:http://www.regular-expressions.info/lookaround.html

答案 1 :(得分:7)

[^<]+ =一个或多个不是&lt;

的字符

< =&lt;你正在寻找

取代:

([^<]+)<

使用:

$1&lt;

答案 2 :(得分:5)

点'。'意为“任何价值”

.<

无论如何,我想你也不想要空格。如果是,那么

\S\s*<

答案 3 :(得分:1)

这会给你“&lt;”在第一次实例之后:

[^<]<

答案 4 :(得分:0)

试试这个:

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

答案 5 :(得分:0)

如果您只想替换,@ duncan的方法可以正常工作,但它与<不匹配。 如果你使用javascript,所有的lookbehind都不会工作。因为javascript不支持lookbehind,除非你打开nodejs中的--harmony标志或chrome中的实验性javascript功能。 但是先行可以在这里工作,这是: /(?!^)</ 将匹配不在一行开头的<。 而更换将是: '<list message="2 < 3">'.replace(/(?!^)</, '&lt;')