Java正则表达式提取所有内容,但在两个方括号之间

时间:2020-06-08 18:09:13

标签: java regex

我正在苦苦挣扎,已经查找了许多资源。感谢您的宝贵时间和耐心等待。我想提取字符串中所有内容,但要放在两个括号之间,包括括号本身。

Duck,Donald [CTO Enterprise] Mouse,Micky [人力资源员工敬业度]

我想拥有:

鸭,唐纳德 鼠标,米奇

到目前为止,我一直表现不佳

[A-Za-z, ][^\[(.*?)\]]

但无济于事。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试:

\s*\[.*?[^\[]*\]

上述正则表达式的解释:

\s* -匹配任何空白字符(等于[\r\n\t\f\v ])零次或多次。

[.*?[^\[]*\] -从字面上匹配方括号,并延迟匹配方括号内的所有内容。如果这也是您的要求,它将甚至替换嵌套的括号。

pictorial representation

您可以在here.中找到正则表达式的演示

Java的实现:

public class Main
{
    public static void main(String[] args) {
        String str = "Duck, Donald [CTO Enterprise] Mouse, Micky [HR Employee Engagement]";
        System.out.println(str.replaceAll("\\s*\\[.*?[^\\[]*\\]", ""));
    }
}
// outputs: Duck, Donald Mouse, Micky

您可以在here.

中找到上述代码的示例运行