gpt4 book ai didi

Java正则表达式匹配

转载 作者:搜寻专家 更新时间:2023-10-30 21:16:51 26 4
gpt4 key购买 nike

当字符串以数字开头,然后是一个点,然后是一个空格和 1 个或多个大写字符时,我需要进行匹配。匹配必须出现在字符串的开头。我有以下字符串。

1. PTYU fmmflksfkslfsm

我试过的正则表达式是:

^\d+[.]\s{1}[A-Z]+

而且不匹配。这个问题的工作正则表达式是什么?

最佳答案

(对于我之前的错误感到抱歉。Brain 现在已完全投入使用。呃,可能吧。)

这个有效:

String rex = "^\\d+\\.\\s\\p{Lu}+.*";

System.out.println("1. PTYU fmmflksfkslfsm".matches(rex));
// true

System.out.println(". PTYU fmmflksfkslfsm".matches(rex));
// false, missing leading digit

System.out.println("1.PTYU fmmflksfkslfsm".matches(rex));
// false, missing space after .

System.out.println("1. xPTYU fmmflksfkslfsm".matches(rex));
// false, lower case letter before the upper case letters

分解:

  • ^ = 字符串开始
  • \d+ = 一位或多位数字 (\ 被转义,因为它在字符串中,因此 \\)
  • \. = 文字 .(或者您原来的 [.] 没问题)(同样,在字符串中转义)
  • \s = 一个空白字符(后面不需要 {1})(我现在不再提及转义)
  • \p{Lu}+ = 一个或多个大写字母(使用正确的 Unicode 转义符)— 谢谢你,tchrist,在下面的评论中指出这一点 . 在英语中,等同于 [A-Z]+)
  • .* = 其他

参见 the documentation here了解详情。

如果您使用的是 String#match(上文)之类的方法,您只需要最后的 .* 将尝试匹配整个 字符串。

关于Java正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4463867/

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