【问题标题】:Regex filtering using JAVA [duplicate]使用 JAVA 进行正则表达式过滤
【发布时间】:2018-06-23 07:19:43
【问题描述】:

如何在 JAVA 中使用正则表达式获取括号之间的字符串? 例如:如果我有一个字符串 abc(de)gh 然后我想要“de”Substing。

【问题讨论】:

  • 到目前为止你尝试过什么?和 PHP(你的标签)有什么联系?
  • 我试过像 /(([^()]*))/i 这样的正则表达式

标签: java regex


【解决方案1】:

正则表达式\((?<TEXT>[^()]+)\)(?<=\()[^()]+(?=\))

详情

\( 匹配字符 (

(?<TEXT>)命名捕获组文本

[^()]+匹配列表中不存在的单个字符

+ 匹配一次到无限次

\) 匹配字符)

Regex demo

【讨论】:

  • 为什么是非捕获组?没用。
  • @Toto 你是对的。
【解决方案2】:

试试这个

public void test1() {

    String str = "abc(de)gh(il)jk";
    String regex = "\\((.*?)\\)";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(str);

    while (matcher.find()) {
        System.out.println(matcher.group(1)); 
    }

}

【讨论】:

  • 它不适用于:abd(de)fgh(ij)kl
  • 谢谢。它成功了
  • 我改变了正则表达式。再试一次。
猜你喜欢
  • 1970-01-01
  • 2012-06-08
  • 2015-03-21
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多