gpt4 book ai didi

java - Regex java 一个用于提取第一个字母字符的正则表达式

转载 作者:行者123 更新时间:2023-11-29 04:18:39 24 4
gpt4 key购买 nike

如何在 Java 中提取第一个字母字符,例如在对字符串 "ABD123EZ13 我应该得到 "ABD"应用正则表达式后,这可能吗,我搜索了一段时间并没有找到任何东西。

我找到这个正则表达式:

String firstThreeCharacters = str.replaceAll("(?i)^[^a-z]*([a-z])[^a-z]*([a-z])[^a-z]*([a-z]).*$", "$1$2$3")

提取前n个字符,但不检查第n个字符是否为字母。

其他例子:

"AAAA"=> "AAAA"

"1231"=> ""

"_abvbv"=> ""

"abd_12df"=> "abd"

最佳答案

你可以使用

String result = s.replaceFirst("(?s)\\P{L}.*", "");

参见 regex demo

详情

  • (?s) - Pattern.DOTALL 修饰符,使 . 匹配换行符
  • \\P{L} - Unicode 字母以外的任何字符
  • .* - 任何 0+ 个字符,直到字符串的末尾。

您不需要 replaceAll,因为只有 1 个替换操作,replaceFirst 就可以了。

如果只需要处理ASCII字母,替换\\P{L},替换为\\P{Alpha},只匹配除ASCII 字母。

可能最简单的匹配方法是 ^\p{L}+^\p{Alpha}+ 从开头匹配 1 个或多个字母的模式仅字符串:

String s = "abd_12df";
Pattern pattern = Pattern.compile("^\\p{L}+"); // or just Pattern.compile("^[a-zA-Z]+") to get the first one or more ASCII letters
Matcher matcher = pattern.matcher(s);
if (matcher.find()){
System.out.println(matcher.group(0));
}

参见 Java demo .

关于java - Regex java 一个用于提取第一个字母字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624098/

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