JAVA - 用 $1 替换正则表达式中的所有内容

标签 java regex extract

在 CodeFight 问题上,它被要求提取字符串的第一位数字并将其作为字符串返回,如果它不是以数字开头则返回 null。

我用的是正则表达式,没问题,但我不太理解最上面的答案:

String longestDigitsPrefix(String inputString) {
    return inputString.replaceAll("^(\\d*).*","$1");
}

如果有人能解释那就太棒了:)

最佳答案

正则表达式 ^(\\d*).* 始终匹配整个输入,捕获(通过括号)前导(^ 表示“输入开始”)数字(如果有 - * 表示 0 或更多,\d 表示“数字”)

替换字符串 $1 表示“第 1 组”(由一组括号构成的第一组)。


其实给出的方案并不是最优雅的。这样更好/更简单/更快/更具可读性:

String longestDigitsPrefix(String inputString) {
    return inputString.replaceAll("\\D.*", "");
}

此正则表达式匹配从遇到的第一个非数字到最后并删除它(替换为空)。

关于JAVA - 用 $1 替换正则表达式中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43220001/

相关文章:

javascript - 在 Javascript 中提取方法

java - 如何从 HTML 网站中提取数据?

java - 从嵌套列表中获取最大值并使用流转换为一个列表

java - 如何从 Android Java 中的 byteArray 获取前 16 位?

regex - 正则表达式中什么是零宽度独立子表达式?

javascript - 我的正则表达式代码不起作用

java - volatile 数组列表未按预期运行

java - OpenShift Pro - Tomcat 正在运行但应用程序未启动

mysql - 特定模式的正则表达式 - 字符串后跟数字

excel - 使用幂查询按数字字符串的最小长度从文本中提取数字