用于我的多模式替换的更简单的正则表达式

lmvvr0a8  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(286)

我有以下代码来解决需要删除简单json标记的情况:

String inputExample = "[\"883-DDEQW\"]";
inputExample = inputExample.replaceAll("]", "");
inputExample = inputExample.replaceAll("\\[", "");
inputExample = inputExample.replaceAll("\"", "");
inputExample = inputExample.replaceAll("\\\\", "");

,使生成的字符串成为所需的:883 ddeqw
所以需要4行代码来执行替换。有没有更简单(或者我应该说更简洁)的方法来执行相同的操作?
谢谢!

i7uq4tfw

i7uq4tfw1#

您可以将要替换的所有字符放入一个字符类:

[\]\["\\]

作为java字符串:

"[\\]\\[\"\\\\]"

你可以把这个传给我 replaceAll :

inputExample = inputExample.replaceAll("[\\]\\[\"\\\\]", "");
axkjgtzd

axkjgtzd2#

您可以匹配所需的输出,而不是删除不需要的字符。在你的情况下,似乎是字母,数字和 - . 所以模式可能是这样的: [\w\d-]+ ```
@Test
public void testRegexp(){
final Pattern pattern = Pattern.compile("([\w\d-]+)");
final String inputExample = "["883-DDEQW"]";
final Matcher matcher = pattern.matcher(inputExample);
if (matcher.find()) {
System.out.println(matcher.group());
}
}

结果: `883-DDEQW` 用于测试正则表达式的有用工具:https://www.freeformatter.com/java-regex-tester.html#ad-输出
更新:
如果你知道你会得到一个合适的json数组,你可以用一些库来解析它。常用的是google gson:

@Test
public void testJson(){
final String inputExample = "["883-DDEQW"]";
JsonArray jsonArray = new JsonParser().parse(inputExample).getAsJsonArray();
for (final JsonElement element: jsonArray){
System.out.println(element.getAsString());
}
}

相关问题