Java正则表达式匹配无结果 无法提取预期key问题求助
问题解决方法
错误原因
- 正则字符串包含无效内容:你将正则边界引号、
gm模式标识直接写在了Java的正则字符串中,Java Pattern不会识别这部分为配置项,而是会当做匹配规则的一部分,导致无匹配结果。 - 多行模式未开启:你需要用
^匹配每一行的行首,必须显式传入Pattern.MULTILINE参数开启多行模式,对应测试工具中的m标记。 - 转义规则不符合Java语法:Java字符串中的反斜杠需要双重转义才能被正则引擎识别,原代码的转义逻辑存在问题。
- 内容字符串的无效转义:原content中给空格加的反斜杠属于Java无效转义,空格不需要额外转义。
修正后代码
String content = "This is an example.=This is an example\nThis is second:=This is second"; // 移除多余引号和内嵌标识,正则规则保留原逻辑 String regex = "^.*(?=\\=)"; // 传入Pattern.MULTILINE开启多行模式 Pattern p = Pattern.compile(regex, Pattern.MULTILINE); Matcher m = p.matcher(content); List<String> mKeys = new ArrayList<>(); while (m.find()) { mKeys.add(m.group()); }
运行结果
修正后mKeys会输出两个预期元素:This is an example.、This is second:。
内容的提问来源于stack exchange,提问作者binks29
相关产品推荐
相关产品推荐

