Netbeans多行正则表达式搜索

15
我想在Netbeans 6.9中搜索所有类型为“text”的HTML输入标签。 Netbeans是否支持使用正则表达式搜索具有不同搜索条件的字符串,这些条件跨越多行或仅适用于单行? 这个正则表达式
<input.*type=['"]text['"].*/>

只有当整个标签及其属性都写在单行中时才能正常工作

<input name="data[something]" id="some_id" value="some_value" type="text" />

但是因为我避免编写过长的代码行并将它们分成如此的段落。

<input name="data[something]" id="some_id"
       value="some_value" type="text" />

同样的正则表达式无法正常工作。

有办法可以做到这一点吗?

1个回答

24

默认情况下,元字符.不匹配换行符。应该有一个名为“单行”或“DOTALL”等的选项,让点匹配每个字符。或者你可以在正则表达式开头添加(?s)以获得同样的效果。

但更好的方法是使用[^<>]*替换.*。在DOTALL模式下,.*会尝试将整个文档都匹配完,导致性能缓慢和/或不正确的匹配,但[^<>]*永远不会尝试超出标签的末尾进行匹配。

顺便说一句,如果您使用['|"]来匹配单引号或双引号,请去掉|。在字符类中,“OR”被隐含,因此您只需要['"](竖杠会简单地匹配一个字面上的竖杠)。


我有一个类似的问题,你的答案帮了我很大的忙。但是另一个问题出现了——我的正则表达式仍然是贪婪的。我在哪里可以阅读更多关于那个“(?s)在开头”的东西?我能用它来使我的正则表达式变得非贪婪吗?谢谢! - Hnatt
4
没事了,我找到了。(.*) - 贪婪模式,(.*?) - 非贪婪模式。 - Hnatt
(?s)确实帮助找到了包含换行符的匹配项,非常感谢! - user219628

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接