gpt4 book ai didi

java - 如何使用正则表达式来匹配该字符串中的 "aas"?

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

String str = "aa(aaq(aas)ppp)eeews";

如何使用正则表达式来匹配“aas”

想匹配括号里的内容,但不确定括号里有多少个,可能会越来越多

最佳答案

由于您需要匹配括号内没有 () 的文本,因此您可以使用

String str = "aa(aaq(aas)ppp)eeews";
String rx = "\\(([^()]*)\\)";
Pattern ptrn = Pattern.compile(rx);
Matcher m = ptrn.matcher(str);
while (m.find()) {
System.out.println(m.group(1)); // => aas
}

参见regex demo

您需要的文本位于捕获组 1 中。请参阅 IDEONE demo 。要仅获取第一次出现,请使用 if 而不是 while

获取第一次出现的另一种方法是使用 "aa(aaq(aas)ppp)eeews".replaceAll("(?s).*?\\(([^()]*)\\).*$", "$1") ( demo ).

为什么不使用环顾四周?您可以,但它们总是会给正则表达式引擎带来一些额外的开销。当然,对于这里的基本模式,性能不是关键,但是,最佳实践是仅在必要时使用环视。

正则表达式详细信息:

  • \( - 匹配开头 (
  • ([^()]*) - 捕获组 1 匹配除 () 之外的零个或多个字符
  • \) - 匹配右圆括号。

关于java - 如何使用正则表达式来匹配该字符串中的 "aas"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34672848/

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