如何在java中定义一个正则表达式(arg_1,arg_2,...,arg_n)并使用它来拆分字符串?

gr8qqesn  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(133)

我正在尝试拆分一个字符串,其中包含几个方法和类的名称,以及我正在尝试提取的其他信息。方法和类由以下内容分隔:对于方法,我只需要名称而不需要参数。我试图定义一个正则表达式来表示(...),其中...表示任何东西。
以下是我目前所做的工作:

String str = "M:org.apache.commons.math3.genetics.CycleCrossover:mate(org.apache.commons.math3.genetics.AbstractListChromosome,org.apache.commons.math3.genetics.AbstractListChromosome) (O)java.util.HashSet:<init>(int)";
String[] arr = line.split(":|[(&&[a-z|A-Z]&&)]");

这将得到以下结果:

M
org.apache.commons.math3.genetics.CycleCrossover
mate(org.apache.commons.math3.genetics.AbstractListChromosome,org.apache.commons.math3.genetics.AbstractListChromosome) (O)java.util.HashSet
<init>(int)

这在技术上和只使用":"是一样的,我试过各种不同的模式,但我得到的壁橱是如下所示:

String[] arr = line.split(":| |[(]|[)]");

其产生:

M
org.apache.commons.math3.genetics.CycleCrossover
mate
org.apache.commons.math3.genetics.AbstractListChromosome,org.apache.commons.math3.genetics.AbstractListChromosome

O
java.util.HashSet
<init>
int

最后我想得到的是

M
org.apache.commons.math3.genetics.CycleCrossover
mate

java.util.HashSet
<init>
hrysbysz

hrysbysz1#

你能给予这个吗:

String[] arr = str.split("(\\((.*?)\\))|:|  |[(]|[)]");

现在应该如下所示:

M
org.apache.commons.math3.genetics.CycleCrossover
mate
 
java.util.HashSet
<init>

\\()//)//将匹配()。对于(.*?).*?将匹配任何字符零或任何内容,()是组。

相关问题