如何从含可变字母数字的字符串中移除指定的gm:every模式片段
解决方案
正则匹配规则说明
你需要匹配的目标片段结构为固定前缀 + 可变字母数字串 + 固定后缀,正则规则拆分如下:
- 固定前缀:
"gm:every":["one:,正则中需要对双引号、方括号做转义,写为\"gm:every\":\[\"one: - 可变字母数字段:用
[a-zA-Z0-9]+匹配1个及以上的大小写字母、数字字符 - 固定后缀:
"],,正则中转义后写为\"\],
Java代码中需要对反斜杠做二次转义,最终的匹配规则字符串为:"\"gm:every\":\\[\"one:[a-zA-Z0-9]+\"\\],"
如果你的原始字符串中双引号保留了HTML转义格式",只需把规则中所有\"替换为"即可。
完整代码示例
public class PatternProcessTest { public static void main(String[] args) { // 待处理原始字符串 String input = "...,{foo.....}\",\"gm:every\":[\"one:varyingalphanumberic193alpha\"],\"{bar...},...."; String matchRule = "\"gm:every\":\\[\"one:[a-zA-Z0-9]+\"\\],"; // 检测是否存在目标模式 boolean isExist = input.matches(".*" + matchRule + ".*"); System.out.println("目标模式是否存在:" + isExist); // 移除所有匹配的片段 String output = input.replaceAll(matchRule, ""); System.out.println("处理后结果:" + output); } }
运行效果
处理后输出结果为:...,{foo.....}","{bar...},....,完全符合预期。
内容的提问来源于stack exchange,提问作者Ajay Kumar
相关产品推荐
相关产品推荐

