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
}