在 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/