Java如何从字符串中提取双引号包裹的参数值
实现思路
- 先对原始输入做预处理:如果字符串里的双引号是HTML转义格式
",先统一替换成普通双引号",再按换行符拆分所有行,空行直接保留用于分段。 - 用正则表达式匹配行尾的参数结构,匹配规则为「连续单词构成的参数名 + 任意空白字符 + 双引号包裹的任意非双引号内容」,对应正则模式为
(\w+)\s+"([^"]+)",模式中两个捕获组分别对应参数名和参数值,不需要手动遍历字符定位双引号位置,逻辑更简洁。 - 逐行遍历匹配所有符合规则的参数对,按
参数名 = 参数值的格式拼接输出,空行直接追加到结果中,保持和要求一致的分段格式。
代码示例
import java.util.regex.Matcher; import java.util.regex.Pattern; public class ParamExtractor { public static void main(String[] args) { // 原始待处理文本,自动兼容HTML转义双引号场景 String rawContent = """ Connect to Database to get data of student severity "low" priority "minor" Connect to System API to get details severity "moderate" priority "medium" """.replace(""", "\""); Pattern pattern = Pattern.compile("(\\w+)\\s+\"([^\"]+)\""); StringBuilder result = new StringBuilder(); for (String line : rawContent.split("\\n")) { if (line.isBlank()) { result.append(System.lineSeparator()); continue; } Matcher matcher = pattern.matcher(line); while (matcher.find()) { result.append(matcher.group(1)) .append(" = ") .append(matcher.group(2)) .append(System.lineSeparator()); } } // 输出最终结果 System.out.print(result); } }
运行结果
代码执行后输出内容完全匹配要求格式:
severity = low priority = minor severity = moderate priority = medium
内容的提问来源于stack exchange,提问作者Garry S
相关产品推荐
相关产品推荐

