正则表达式java 一个正则表达式,用于提取第一个按字母顺序排列的 caracter



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

我发现这个正则表达式:

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

提取前 n 个 caracters,但它不检查第 n 个 caracter 是否按字母顺序排列。

其他示例:

"AAAA" => "AAAA">

"1231" => ">

"_abvbv" => ">

"abd_12df" => "abd">

您可以使用

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

查看正则表达式演示

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

您不需要replaceAll因为只有 1 次更换操作,replaceFirst很好。

如果只需要处理 ASCII 字母,请将\P{L}替换为仅匹配 ASCII 字母以外的任何字符的\P{Alpha}

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

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演示。

相关内容

  • 没有找到相关文章

最新更新