gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:21:02 24 4
gpt4 key购买 nike

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

>\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 提供的解决方案 - 下面的正则表达式是有效的 -

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

但是它匹配的是整行。但我只想在//

之后捕获字符串

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

最佳答案

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

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

查看 the demo 中的匹配项

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

解释

  • (?m) 打开多行模式,允许 ^$ 在每一行上匹配
  • ^ anchor 断言我们在字符串的开头
  • $ anchor 断言我们在字符串的末尾
  • 否定先行 (?!.*>\s*$) 断言后面不是任何字符,然后是 >、可选空格和行尾
  • .* 匹配行

已编辑问题的选项 2

同样的想法,两种环视。

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

引用

关于java - 使用正则表达式匹配不以 >\s* 结尾的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24730259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com