Java 不匹配的匹配线';t以>\s*使用正则表达式

Java 不匹配的匹配线';t以>\s*使用正则表达式,java,regex,ant,Java,Regex,Ant,我们可以使用不以模式结尾的正则表达式匹配一行吗- >\s* 换句话说,>\s*$匹配以>结尾,后跟零或更多空格的行。我想找到那些和它不匹配的线 在ANT构建期间,我将使用它删除一些行 解决方案 ^(?!.>\s$).*由zx81提供 增加: 基本上,我试图在构建过程中删除songle行注释 (?<!http:|https:)\/\/.*$ (? 上面的正则表达式能够做到这一点(我考虑在quotetion标记中没有任何注释)- <!DOCTYPE HTML PUBLIC "-

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

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

在ANT构建期间,我将使用它删除一些行

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

增加: 基本上,我试图在构建过程中删除songle行注释

(?<!http:|https:)\/\/.*$
(?
上面的正则表达式能够做到这一点(我考虑在quotetion标记中没有任何注释)-

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - No match
<% // END: Modified %> - No match
-不匹配
-没有对手
范例

http://example.com -没有对手
abc//QQQQ-匹配
-没有对手
//评论匹配
/*注释*/程序//注释-匹配
var ok=“不是真的”—不匹配
-没有对手
这是我的目的。很抱歉,我在问了我原来的问题后又增加了这个条件。你们能帮我一下吗

基于zx81提供的解决方案,下面的正则表达式正在工作-

^(?!<!DOCTYPE[^>]*>\s*$)(?!<%[^>]*%>\s*$).*(?<!http:|https:)\/\/.*$
^(?!]*>\s*$)(?!]*%>\s*$).*?
但它与整行匹配。但我只想捕获后面的字符串//


但是,我原来的问题已经得到了回答,我已经接受了答案。

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

在中查看比赛

根据风格设置
m
标志:
(?m)^(?。*>\s*$).
/^(?。.*>\s*$).*/m

解释

  • (?m)
    打开多行模式,允许
    ^
    $
    在每行上匹配
  • ^
    锚定声明我们位于字符串的开头
  • $
    锚点断言我们在字符串的末尾
  • 负向前看
    (?!.*>\s*$)
    断言下面的不是任何字符、可选空格和行尾
  • *
    与该行匹配
已编辑问题的选项2

同样的想法,两个环顾四周

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


    • 在.NET
      ^.*(\s*)$
      中就足够了,这是实现这一点的简单方法,但遗憾的是,几乎没有其他引擎允许任意长度的查找…是的,我已经在中测试了您的算法。它在查找中显示无效模式:(这就是为什么指定您正在使用的正则表达式的味道总是很有用的原因。@Kartic他的意思是
      .NET
      .NET
      lookbehind允许这样做。@zespri:上次我检查的时候,Ant是Java。我希望这些标记是正确的。大多数在线正则表达式测试工具都使用Flash或JavaScript,因此它们在测试方面是无用的e更高级的功能。这个解决方案看起来不错。我会在一轮测试后更新。仅供参考,调整了答案并添加了演示、解释和参考。:)@zx81我已经改变了我的问题。你能帮帮我吗?你是说应该允许
      匹配吗?不,我不想匹配以>结尾并后跟零或更多空格的注释。
      ^(?!.*>\s*$).*
      
      ^(?!<!DOCTYPE[^>]*>\s*$)(?!<%[^>]*%>\s*$).*