gpt4 book ai didi

java - 这个正则表达式不正确吗?找不到匹配项

转载 作者:行者123 更新时间:2023-12-03 23:30:58 24 4
gpt4 key购买 nike

我正在尝试通过这样的格式来解析字符串,但具有更多的值:

Key1=value,Key2=value,Key3=value,Key4=value,Key5=value,Key6=value,Key7=value

正则表达式

((Key1)=(.*)),((Key2)=(.*)),((Key3)=(.*)),((Key4)=(.*)),((Key5)=(.*)),((Key6)=(.*)),((Key7)=(.*))

在实际的字符串中,键/值的数量大约是原来的两倍,但是为了简洁起见,我将其简短化。我将它们放在括号中,以便可以成组地称呼它们。我存储为常量的键,它们将始终相同。问题是,它永远不会找到没有意义的匹配项(除非正则表达式是错误的)

最佳答案

从上面的评论来看,这听起来像是您正在创建Pattern和Matcher对象,并将Matcher与目标字符串相关联,但实际上并没有应用正则表达式。这是一个非常常见的错误。这是完整的序列:

String regex = "Key1=(.*),Key2=(.*)"; // etc.
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(targetString);
// Now you have to apply the regex:
if (m.find())
{
String value1 = m.group(1);
String value2 = m.group(2);
// etc.
}


您不仅需要调用 find()matches()(或 lookingAt(),而且没有人使用过),还应该始终在 ifwhile语句中调用它-也就是说,您应该请确保在调用诸如 group()之类的要求Matcher处于“ matched”状态的方法之前,确保正则表达式确实有效。

另请注意,大多数括号都没有。它们不是必需的,将它们遗漏可以使(1)读取正则表达式和(2)跟踪组号变得更加容易。

关于java - 这个正则表达式不正确吗?找不到匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8043576/

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