如何使用正则表达式匹配括号内的文本?

nor*_*ole 10 java regex

我有以下模式:

(COMPANY) -277.9887 (ASP,) -277.9887 (INC.) 
Run Code Online (Sandbox Code Playgroud)

我希望最终输出为:

COMPANY ASP,INC.

目前我有以下代码,它不断返回原始模式(我假设因为该组都在第一个'('和最后')之间

Pattern p = Pattern.compile("((.*))",Pattern.DOTALL);
Matcher matcher = p.matcher(eName);
while(matcher.find())
{
    System.out.println("found match:"+matcher.group(1));
}
Run Code Online (Sandbox Code Playgroud)

我正在努力获得我需要的结果并感谢任何帮助.我得到每个小组后,我并不担心连接结果,只需要得到每个小组.

cha*_*aos 28

Pattern p = Pattern.compile("\\((.*?)\\)",Pattern.DOTALL);
Run Code Online (Sandbox Code Playgroud)


pto*_*mli 6

你的.*量词是'贪婪',所以是的,它抓住了第一个和最后一个可用括号之间的所有内容.正如混乱所说,简洁:),使用.*?是一个非贪婪的量词,因此它会在保持匹配的同时尽可能少地抓取.

并且您需要在正则表达式中转义括号,否则它将成为另一个组.假设你的字符串中有字面括号.我怀疑你在初始问题中提到的是你的模式实际上是你的字符串.

查询:是"公司","ASP"和"INC".要求

如果你必须有它们的值,那么你想使用+代替*,+是1或更多,*是零或更多,所以a*将匹配文字字符串"()"

例如:"((.+?))"