gpt4 book ai didi

Java Regex Matcher 有效,但 String.split() 无效

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:28:21 24 4
gpt4 key购买 nike

我希望使用一行 String.split() 来提取我正在编写的查询中的“名称”..

Pattern + Matcher 的工作方式与预期的一样,但我正在绞尽脑汁想弄清楚为什么 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
`

最佳答案

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

您可以使用的是:

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

返回一些名字

关于Java Regex Matcher 有效,但 String.split() 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18311567/

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