答案 0 :(得分:3)
您当前的模式不正确,它在文件使用'
时期望"
。您可能想进一步改善模式,但是整个问题可以通过流来解决:
Pattern pattern = Pattern.compile("name=\"(.+)\"");
try (BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt"))) {
return reader.lines()
.map(pattern::matcher)
.filter(Matcher::matches)
.map(m -> m.group(1))
.findFirst()
.orElseThrow(IllegalArgumentException::new);
}
答案 1 :(得分:1)
您需要做的是使用正则表达式中匹配的group 1
:
您可以按照以下步骤进行操作:
matcher.group(1)
工作示例:
List<String> list = new ArrayList<>();
list.add("name=\"john\"");
for(String str:list){
Pattern pattern = Pattern.compile("name=\"([^']*)\"");
Matcher matcher = pattern.matcher(str);
if(matcher.matches())
System.out.println(matcher.group(1)); // having the value john
}
Jshell输出:
jshell> for(String str:list){
...> Pattern pattern = Pattern.compile("name=\"([^']*)\"");
...> Matcher matcher = pattern.matcher(str);
...> if(matcher.matches())
...> System.out.println(matcher.group(1));
...> }
john