Java 正在尝试创建regexp

Java 正在尝试创建regexp,java,python,regex,Java,Python,Regex,我有一个字符串,我希望通过Java或Python regexp解析该字符串: something (\var1 \var2 \var3 $var4 #var5 $var6 *fdsfdsfd @uytuytuyt fdsgfdgfdgf aaabbccc) var的数量未知。他们的确切姓名不详。它们的名字可能以“\”或“$”、“*”、“@”或“#”开头,也可能不以“\”或“$”、“*”、“@”或“#”开头,并用空格分隔 如果可能的话,我想分别解析它们,也就是在捕获组中。我该怎么做?我想要的输出

我有一个字符串,我希望通过Java或Python regexp解析该字符串:

something (\var1 \var2 \var3 $var4 #var5 $var6 *fdsfdsfd @uytuytuyt fdsgfdgfdgf aaabbccc)
var
的数量未知。他们的确切姓名不详。它们的名字可能以“\”或“$”、“*”、“@”或“#”开头,也可能不以“\”或“$”、“*”、“@”或“#”开头,并用空格分隔

如果可能的话,我想分别解析它们,也就是在捕获组中。我该怎么做?我想要的输出是以下内容的列表:

[\var1 , \var2 , \var3 , $var4 , #var5 , $var6 , *fdsfdsfd , @uytuytuyt , fdsgfdgfdgf , aaabbccc]
我不需要java或python代码,我只需要regexp。我不完整的一个是:

something\s\(.+\)
something\s\(.+)\)

在这个正则表达式中,您将捕获包含所有变量的字符串。基于空格分割,因为您确定它们是由空格分隔的

m = re.search('something\s\((.+)\)', input_string)
if m:
    list_of_vars = m.group(1).split()

如果它们只是由空格分隔,为什么不能使用split方法呢?Java正则表达式不擅长捕获一些模式的变量数。我认为您必须使用您开始使用的正则表达式,添加
()
,以捕获括号中的部分,如
something\s\(.+)\)
,将捕获组提取到一个字符串中,然后对捕获的字符串进行
拆分,或者对该字符串执行其他操作以循环。但是你不能用一个正则表达式做你想做的事情,至少在Java中是这样。对不起,我不懂Python,但在Java中这是行不通的,因为您还没有定义任何捕获组。在正则表达式中需要一组额外的括号。Python在这方面是否有不同的工作方式?我刚刚检查了一下,它说它只有一个组,即初始字符串
某物(\var1\var2\var3$var4#var5$var6*fdsfdsfd@uytuytuyt fdsgfdgfdgf aaabbcc)
@ajb,谢谢。只是复制粘贴了OP的regexp,尽管我在编写的试用代码中做了更改。我已经做了编辑。@Dett,你现在能试试吗?