gpt4 book ai didi

java - 如何通过正则表达式查找特殊模式

转载 作者:行者123 更新时间:2023-11-30 08:03:03 25 4
gpt4 key购买 nike

我有以下不匹配两个不同字符串的正则表达式。

找到 AB-434 的实际正则表达式。与 TEMS-54534 不匹配。

([a-zA-Z][a-zA-Z0-9_]+-[1-9][0-9]*)([^.]|\.[^0-9]|\.$|$)

这里是示例输入

TEMS-54534

TEMS-5453

TEMS-1233

TEMS-12

CB-213
CB-2135
CB-12

ABC-2223
ABC-223
ABC-12

最佳答案

您似乎在寻找一种模式,该模式以 1 个 ASCII 字母开头,后跟 1 个或多个字母数字或下划线字符,后跟 - 后跟一个或多个不以 0 开头的数字

你可以使用

^[a-zA-Z][a-zA-Z0-9_]+-[1-9][0-9]*$

^[a-zA-Z]\w+-(?!0)\d+$

参见 regex demo (和 another one )。

解释:

  • ^ - 字符串的开始
  • [a-zA-Z][a-zA-Z0-9_]+/[a-zA-Z]\w+ - 一个 ASCII 字母后跟1+ 个字母数字/下划线字符
  • - - 连字符
  • [1-9][0-9]*/(?!0)\d+ - 来自 1-9 的数字范围后跟 0+ nay 数字(如果需要,您可以使用 {min,max} 限制量词限制它)
  • $ - 字符串结尾

更多详情:

  • [a-zA-Z0-9_]可以写成\w(如果不使用Pattern.UNICODE_CHARACTER_CLASS)
  • 在 Java 中,不要忘记使用双反斜杠来转义元字符和速记字符类
  • 如果模式与 String#matches() 一起使用,则模式开头的 ^ 和结尾的 $ 是多余的。

还有一个 Java demo :

List<String> strs = Arrays.asList("TEMS-54534","TEMS-5453","TEMS-1233","TEMS-12","CB-213",
"CB-2135","CB-12","ABC-2223","ABC-223","ABC-12");
for (String str : strs)
System.out.println(str.matches("[a-zA-Z]\\w+-(?!0)\\d+"));

关于java - 如何通过正则表达式查找特殊模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36494206/

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