如果前面的文本不匹配单词不是“class ='”

时间:2013-01-10 16:48:21

标签: regex regex-negation regex-lookarounds

我正在尝试为搜索创建一个正则表达式,它将查看以下代码并仅返回id而不是类:

1   id="contact"
2   class="contact"
3   #contact
4   .contact

我想从第1行和第3行返回contact,而不是第2行和第4行。

这是为了跨多个文件进行搜索,以避免单独检查每个文件并检查是否需要更改。

这可能吗?

1 个答案:

答案 0 :(得分:0)

你走了:

/(?:#|id=")(\w+)"?/g

字符串以#id="开头,后跟单词字符。你可能想要增强它来处理破折号和下划线,我敢打赌。

在这种情况下,第一组是非捕获的,ID文本将是您的第一个捕获组$1

<强>更新

这一个:

(?:(?<=id=")|(?<=#))(contact)

使用正面的lookbehind来找到你的前缀并匹配字符串&#34; contact&#34;。这不适用于JavaScript(因此您无法在线测试),但可以在文本编辑器或CLI工具(如ack)中使用。