Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用正则表达式来匹配;aas“;用这根绳子?_Java_Regex - Fatal编程技术网

Java 如何使用正则表达式来匹配;aas“;用这根绳子?

Java 如何使用正则表达式来匹配;aas“;用这根绳子?,java,regex,Java,Regex,如何使用正则表达式匹配“aas” 要匹配括号的内容,但不确定括号的数量,可能会越来越多(?因为需要匹配括号内没有(或)的文本,所以可以使用 String str = "aa(aaq(aas)ppp)eeews"; (?<=\\()[^()]*(?=\\)) 看 您需要的文本位于捕获组1中。请参阅。要仅获取第一次出现的文本,请使用if而不是while 另一种获取第一个匹配项的方法是使用“aa(aaq(aas)ppp)eews.replaceAll((?s)。*?\\([^()]*)\\)

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


要匹配括号的内容,但不确定括号的数量,可能会越来越多(?因为需要匹配括号内没有
的文本,所以可以使用

String str = "aa(aaq(aas)ppp)eeews";
(?<=\\()[^()]*(?=\\))

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

另一种获取第一个匹配项的方法是使用
“aa(aaq(aas)ppp)eews.replaceAll((?s)。*?\\([^()]*)\\).*$,“$1”)
()

为什么不使用lookarounds呢?可以,但它们总是会给regex引擎带来一些额外的开销。当然,使用这种基本模式,性能并不是关键,但是,只有在必要时才使用lookarounds是最佳实践

正则表达式详细信息:

  • \(
    -匹配开头的
  • ([^()]*)
    -捕获组1中与
    以外的零个或多个字符相匹配的字符
  • \)
    -匹配右括号

这真的很简单。你试过什么吗?这里有答案,只需搜索。你需要提供更多的上下文。
的数量是固定的还是可变的?是什么让
aas
比其他任何一个更容易挑选?它没有任何
在其中?关于
aa
aaq
如何,我们为什么不匹配它们?等等。还要指出您尝试了什么以及遇到了什么问题。展示您的尝试。您能详细说明一下吗?如果您想获得aas,您可以简单地放上“aas”在一个字符串中…这个字符串还有什么变化?aas总是aas吗?只是想匹配括号中的内容,但不确定有多少个括号,可能会更多。那么,如果您有这样一个字符串:
“(aa(aas)(aaf)www)”
?该返回什么结果?
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
}