【问题标题】:Java Regular Expression to extract everything BUT what is between two brackets [duplicate]Java正则表达式提取所有内容,但两个括号之间的内容[重复]
【发布时间】:2020-09-27 19:13:12
【问题描述】:

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

Duck,Donald [CTO Enterprise] Mouse, Micky [HR 员工敬业度]

我只想拥有:

鸭子,唐纳德 老鼠,米奇

到目前为止,我一直在严重操纵

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

但无济于事。

谢谢!!

【问题讨论】:

  • 拆分s.split("\\[[^\\]\\[]*\\]"),或替换s.replaceAll("\\s*\\[[^\\]\\[]*\\]", "")

标签: java regex


【解决方案1】:

你可以试试:

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

上述正则表达式的解释:

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

[.*?[^\[]*\] - 按字面意思匹配方括号并懒惰地匹配方括号内的所有内容。如果这也是您的要求,它甚至会替换嵌套的括号。

你可以在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.找到上述代码的示例运行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多