gpt4 book ai didi

java - 正则表达式混淆

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:59:07 26 4
gpt4 key购买 nike

我是 Java 正则表达式概念的新手。

谁能告诉我应该用于以下字符串的正确正则表达式 -

String exp = "ABCD_123_abc".

我对上述字符串使用的正则表达式是:

regExp = "([a-zA-Z]+)_([0-9]+)_([a-z]+)"

但是下面代码的输出是"**No Match Found**"

Public static void main()
{
String exp = "ABCD_123_abc";
String regExp = "([a-zA-Z]+)_([0-9]+)_([a-z]+)";
Pattern pattern = Pattern.compile(exp);
Matcher matcher = pattern.matcher(regExp);
if(matcher.matches())
{
System.out.println("Match found");
}
else
{
System.out.println(" NO Match found");
}


}

最佳答案

问题是:你不小心调换了正则表达式模式和要检查的表达式

String exp = "ABCD_123_abc";
String regExp = "([a-zA-Z]+)_([0-9]+)_([a-z]+)";

应该使用

Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(exp);

Pattern.compile(String regex)函数接受正则表达式。

编辑

我很抱歉,我的第一个解决方案确实是必须永远,永远永远完成的事情:变量的名称与其值的含义相矛盾。 .. 这意味着痛苦和泪水,以及在被怒吼时被愤怒的同事击中。并且对这种罪行没有有效的辩护...

编辑2您可以通过 Matcher.group(int) 获取各个匹配的组功能:

String matchedStringpart matcher.group(2);

注意:我使用 2 作为参数:

  • 0表示匹配的输入序列
  • 1 表示第一组(在本例中为 ABC)
  • ...等等

如果您只需要 123 部分,为了清晰起见,我会重写正则表达式:

regExp = "[a-zA-Z]+_([0-9]+)_[a-z]+";

但是,在这种情况下,必须使用 1 调用 group(),因为现在第一个(也是唯一一个)匹配的组是第一个:

String matchedStringpart matcher.group(1);

关于java - 正则表达式混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15495997/

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