与正则表达式匹配时忽略特定行

时间:2013-06-04 14:40:32

标签: regex ignore

我正在尝试制作与特定模式匹配的正则表达式,但我想忽略以#开头的行。我该怎么做?

假设我有模式(?i)(^|\W)[a-z]($|\W)

它匹配所有行,只有一个字母出现。它匹配这些行,例如:

asdf e asdf
j
kke o

现在我想覆盖它,使其与以#

开头的行不匹配

编辑:

我不够具体。我的真实模式更复杂。看起来有点像这样:(?i)(^ | \ W)([a-hj-z] | lala | bwaaa | foo($ | \ W)

它应该像我想阻止攻击性语言一样使用,如果一行不以哈希开头,在这种情况下它应该覆盖。

2 个答案:

答案 0 :(得分:4)

这就是你要找的东西

^(?!#).+$

^标记了行的开头,$标记了行尾(在多行模式下)

.+会匹配1到多个字符

(?!#)是一个前瞻,只有当该行不以#开头时才会进一步匹配

答案 1 :(得分:1)

此正则表达式将匹配任何单词\w,而不是#

^(?<!#)\w+$

它在字符串的开头执行负向lookbehind,然后用1个或多个单词字符跟随它。