java - 正则表达式否定无法正常工作

标签 java regex negation

我使用以下正则表达式:

^[^^DD(|    ]

有了这些数据:

jfklajf
^DD
     hjhkjk
DIOL(.D1)

表达式正确识别第一行 (jfkl...),但无法识别最后一行 (DIOL...)。我需要将这两行识别为与行开头的模式 ^DD( 不匹配。

我做错了什么?

谢谢

最佳答案

根据您的评论,您可以使用否定。前瞻与 anchor 结合:

^(?!\^DD|[ ]{4}).+


分割来看,这表示:

^          # match start of the line
(?!        # neg. lookahead
    \^DD   # neither ^DD
    |      # nor
    [ ]{4} # four spaces
)
.+         # omit empty lines

参见a demo on regex101.com 。请注意,您需要在 Java 中对反斜杠进行双转义。

关于java - 正则表达式否定无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48667854/

相关文章:

java - Selenium WebDriver 找不到页面上的任何元素

php - 变量前面的感叹号 - 需要说明

java - 期望的结果数据不是通过从 Android 手机扫描二维码来压缩的 Base64 字符串吗?

java - 从 java 类运行 geb 测试

regex - 正则表达式 : matching only if not ending in particular sequence

java - 有没有办法指定一个与其他任何一个都不匹配的正则表达式?

javascript - jQuery 函数用逗号和小数格式化数字

c# - 在 C# 中否定浮点值的最佳方法

nlp - 否定句子的算法

java - 允许最终程序员扩展 API 枚举