gpt4 book ai didi

java - 正则表达式:删除 Java 中的第二对括号

转载 作者:行者123 更新时间:2023-12-02 09:48:10 26 4
gpt4 key购买 nike

我想删除字符串中的第二组括号。最好使用这个 Java 方法:replaceAll()

到目前为止我已经尝试过:

  1. return device.replaceAll("(\w+\s*\w*)","");
    抛出错误:unexpected char\

  2. return device.replaceAll("[()]","").trim();
    删除所有括号和尾随空格

这是我的方法:

private static String parseDeviceDescription(String device) {
device = device.replaceAll("apply discount","");
return device.replaceAll("(\w+\s*\w*)","");
}

这是我如何调用该方法:

String device = parseDeviceDescription("device name (2018) (apply discount)");
System.out.println("The device description is: " + device);

预期结果:

"device name (2018)"

最佳答案

如果我们把“去掉第二组括号”理解为如果两组括号括起来的字符串是连续的,则去掉第二组,我们可以这样写:

private static String parseDeviceDescription(String device) {
return device.replaceAll("(\\([^()]*\\))\\s*\\([^()]*\\)", "$1");
}

测试

String[] devices = {
"device name (2018) (apply discount)",
"a b (c)",
"a b (c) (d) (e)",
"a (b) c (d) (e) f (g) (h)",
"a (b) (c) (d) (e) (f) (g) (h)"
};
for (String device : devices)
System.out.println(parseDeviceDescription(device));

输出

device name (2018)
a b (c)
a b (c) (e)
a (b) c (d) f (g)
a (b) (d) (f) (h)

另请参阅 regex101.com 上的演示.

已解释

(              Start capture group #1
\([^()]*\) Match `(text)` where `text` cannot contain parenthesis
) End capture group #1
\s* Match white-spaces, if any
\([^()]*\) Match `(text)` where `text` cannot contain parenthesis

$1 Insert test from capture group #1

在英语中,它匹配两组括号括起来的文本,可以选择用空格分隔,并保留第一组。

关于java - 正则表达式:删除 Java 中的第二对括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56501337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com