当前位置: 首页 > 知识库问答 >
问题:

Java Regex Matcher可以工作,但String.split()不能

扶珂
2023-03-14

我希望使用一行String.split()拉出'名称'在查询我写...

模式匹配器像预期的那样工作,但是我正在努力找出为什么String.split()不返回匹配!

public static void main(String[] asdf)
{
    final String queryText = "id <equals> `1` <AND> name <equals> `some name`";
    final String regex = "^(.*name <equals> `)([\\S\\s]*)(`.*)$";

    System.out.println("Splitting...");
    final String[] split = queryText.split(regex);
    for (int i = 0; i < split.length; i++)
    {
        System.out.println(split[i]);
    }

    System.out.println("Matching...");
    final Pattern pattern = Pattern.compile(regex);
    final Matcher matcher = pattern.matcher(queryText);

    if (matcher.find())
    {
        for (int i = 0; i < matcher.groupCount(); i++)
        {
            System.out.println(matcher.group(i + 1));
        }
    }
}

打印输出

Splitting...
Matching...
id <equals> `1` <AND> name <equals> `
some name
`

共有3个答案

楮杰
2023-03-14

您的正则表达式变量未正确形成为字符串拆分()方法...尝试破坏正则表达式,如本线程的答案所示...

java-使用正则表达式拆分字符串

傅鸿波
2023-03-14

正则表达式覆盖所有字符串。尝试删除“^”和“$”。Split方法希望删除表达式,而不是检测特定子字符串必须找到的表达式。

盖晋
2023-03-14

您的正则表达式匹配整个字符串。因此,拆分时,整个字符串都会被删除。它与"a"完全相同。拆分("a"),它返回一个空数组

您可以使用以下选项:

queryText.replaceAll(".*name <equals> `([^`]+)`.*", "$1")

它返回一些名称

 类似资料:
  • 编辑:getResourceAsStream()与FileInputStream 这是我找到的最好的解释。就我个人而言,在尝试了InputStream的所有不同子类后,我觉得FileInputstream()返回的InputStream和getResourceAsStream()返回的InputStream的实现在某些方面略有不同(导致与javax.xml.parsers.不兼容)。 我会把这个打

  • 问题内容: 我试图在HashMap中找到一个键。我可以使用’get’打印选定的键,但是在if语句中使用’containsKey’时,找不到该键。 我知道该键存在于Map中,但它一直返回false。有什么想法的人吗? 我的代码: 这是Location类的代码: 问题答案: 您必须确保该类已正确实现其和方法(文档)。也就是说,如果两个对象实际上相等,则它们应该共享一个公共哈希码,并且它们的方法应该返回

  • 好吧,所以我得到了一个新的电脑 Windows 7 Pro 64位Service Pack 1 我安装了jdk-7U25-Windows-x64(jdk 1.7.0_25) 它安装在默认位置C:\program files\java\jdk1.7.0_25 我向Path环境变量添加了%java_home%\bin(是的,在添加之前我使用了;) 单击确定 关闭所有CMD窗口打开它们 现在,如果我运行

  • 正在更新属性文件:/home/mehmet/works/netbeansprojects/hsm_java/build/built-clean.属性删除目录/home/mehmet/works/netbeansprojects/hsm_java/build 清洁: 初始化: 已创建目录:/home///netbeansprojects/hsm_java/build/empty 已创建目录:/hom

  • 几天来,我一直在用头撞这个,完全被难倒了。下面是纲要: 我有一个Eclipse插件项目,使用Tycho通过Maven 3构建 在Maven中,我已经设置了maven-jarsigner-plugin来使用我的keystore对jars进行签名(有关keystore的详细信息,请参阅下文) 我的密钥库里有个Thawte签名的代码签名证书 我可以从目标/*中获取任何签名的jar文件,并在上面运行“ja

  • 这个问题的上下文是在sping-boot中,使用sping-data-jpa和hibernate。 一个同事写了一个,并用注释了service方法。服务方法加载一个实体,然后命中一个一对多延迟加载的集合(