我有一个字符串
String s = "adfgadfbfgadg sa 2419sfgh";
我正在尝试提取子字符串
String substring = "sa 2419sfgh";
使用以下正则表达式和代码的模式和匹配器。
formNumberRegex = "[al|sf|sa|sc|nrc|nrc form|doe|doe f|lsi|doe form psd f|doe al f]?[\\s\\-\\.]*[\\d]{3,6}[\\s\\-\\.]*[\\w]{1,4}";
formNumberRegexPattern = Pattern.compile(formNumberRegex);
formNumberMatcher = formNumberRegexPattern.matcher(s);
if (formNumberMatcher.find()) {
String substring = formNumberMatcher.group();
}
但是,我只是得到
substring = "a 2419sfgh";
我的正则表达式和/或匹配器有什么问题?
最佳答案
我立即注意到:
[al|sf|sa|sc|nrc|nrc form|doe|doe f|lsi|doe form psd f|doe al f]?
应该是:
(?:al|sf|sa|sc|nrc|nrc form|doe|doe f|lsi|doe form psd f|doe al f)?
“非捕获组”(?:) 可让您避免捕获第一部分作为初始组。这样,整个表达式就是“匹配组 0”,仅此而已。
关于java - Matcher.group 和正则表达式 不提取完整的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19774315/