使用正则表达式匹配不以> \ s *结尾的行

时间:2014-07-14 05:53:55

标签: java regex ant

我们可以使用不以模式结束的正则表达式匹配一行 -

>\s*

换句话说,> \ s * $ 匹配以> 结尾的行,后跟零或更多空格。我想找到那些与之匹配的行。

我会在ANT构建期间使用它删除一些行。

的解决方案的 ^(?!。> \ s $)。*由zx81提供

已添加: 基本上我试图在构建期间删除歌曲行注释。

(?<!http:|https:)\/\/.*$

以上正则表达式能够做到这一点(我正在考虑引号内没有评论)。但我不想捕捉 -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - No match
<% // END: Modified %> - No match

实施例

http://example.com - No match
abc  //  qqqqqqqqqq - Match
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - No Match
// comment - Match
/* comment */ program //comment - Match
var ok = "not really"; - No Match
<% // END: Modified %> - No match

这是我的目的。对不起,我在问我原来的问题后补充了这个条件。你们也可以帮助我吗?

根据zx81提供的解决方案 - 在regex下面工作 -

^(?!<!DOCTYPE[^>]*>\s*$)(?!<%[^>]*%>\s*$).*(?<!http:|https:)\/\/.*$

但它与整条线相匹配。但我只想在//

之后捕获字符串

然而,我原来的问题已经回答了,我接受了答案。

1 个答案:

答案 0 :(得分:3)

在多行模式下使用它(非Ruby风格的m标志):

^(?!.*>\s*$).*

查看the demo

中的匹配项

设置m标志,具体取决于风味:(?m)^(?!.*>\s*$).*/^(?!.*>\s*$).*/m

<强>解释

  • (?m)启用了多行模式,允许^$在每一行匹配
  • ^锚点断言我们位于字符串的开头
  • $锚点断言我们位于字符串的末尾
  • 否定前瞻(?!.*>\s*$)断言后面的内容不是任何字符>,可选空格和行尾
  • .*匹配

编辑问题的选项2

同样的想法,两个外观。

^(?!<!DOCTYPE[^>]*>\s*$)(?!<%[^>]*%>\s*$).*

<强>参考