gpt4 book ai didi

java - 如果即使是子字符串也遵循该模式,则正则表达式返回 true

转载 作者:行者123 更新时间:2023-12-04 08:29:50 24 4
gpt4 key购买 nike

我只是在练习正则表达式,发现了一些有趣的东西
对于字符串"world9 a9$ b6$"我的正则表达式 "^(?=.*[\\d])(?=\\S+\\$).{2,}$"将返回 false,因为在前瞻找到至少具有一位数字和非空格字符的 $ 符号之前,中间有一个空格。
总的来说,字符串与模式不匹配。
如果即使子字符串遵循模式也想返回 true,那么正则表达式应该是什么?
在这个 a9$ 和 b6$ 都遵循正则表达式。

最佳答案

您可以使用

^(?=\D*\d)(?=.*\S\$).{2,}$
regex demo .如 The fourth bird mentions , 自 \S\$匹配两个字符,您可以简单地将模式移动到消费部分,并使用 ^(?=\D*\d).*\S\$.*$ ,见 this regex demo .
详情
  • ^ - 字符串的开始(如果在 .matches() 中使用则隐式)
  • (?=\D*\d) - 正向前瞻,需要零个或多个非数字字符,紧跟当前位置右侧的数字字符
  • (?=.*\S\$) - 需要零个或多个除换行符以外的字符的正向前瞻,尽可能多,然后是非空白字符和 $当前位置右侧的字符
  • .{2,} - 除换行符以外的任意两个或更多字符,尽可能多
  • $ - 字符串结尾(如果在 .matches() 中使用则隐式)
  • 关于java - 如果即使是子字符串也遵循该模式,则正则表达式返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65076058/

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