gpt4 book ai didi

java - Java 中的正则表达式有什么问题

转载 作者:行者123 更新时间:2023-11-30 06:12:25 25 4
gpt4 key购买 nike

我想获取单词 text2,但它返回 null。你能更正一下吗?

String str = "Text SETVAR((&&text1 '&&text2'))";
Pattern patter1 = Pattern.compile("SETVAR\\w+&&(\\w+)'\\)\\)");
Matcher matcher = patter1.matcher(str);
String result = null;
if (matcher.find()) {
result = matcher.group(1);
}
System.out.println(result);

最佳答案

一种方法是匹配括号中所有可能的模式:

String str = "Text SETVAR((&&text1 '&&text2'))";
Pattern patter1 = Pattern.compile("SETVAR[(]{2}&&\\w+\\s*'&&(\\w+)'[)]{2}");
Matcher matcher = patter1.matcher(str);
String result = "";
if (matcher.find()) {
result = matcher.group(1);
}
System.out.println(result);

参见 IDEONE demo

您还可以在括号内使用 [^()]* 来获取单个撇号内的值:

Pattern patter1 = Pattern.compile("SETVAR[(]{2}[^()]*'&&(\\w+)'[)]{2}");
^^^^^^

参见 another demo

让我为您分解正则表达式:

  • SETVAR - 按字面意思匹配 SETVAR,然后...
  • [(]{2} - 匹配 2 ( 字面意思,然后...
  • [^()]* - 匹配除 () 之外的 0 个或多个字符,最多...
  • '&& - 匹配一个撇号和两个 & 符号,然后...
  • (\\w+) - 将一个或多个单词字符匹配并捕获到第 1 组
  • '[)]{2} - 逐字匹配一个撇号,然后匹配 2 个 ) 符号。

关于java - Java 中的正则表达式有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32908555/

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