Regex 正则表达式以匹配括号和逗号之间的字符串,但存在多个括号

Regex 正则表达式以匹配括号和逗号之间的字符串,但存在多个括号,regex,regex-lookarounds,Regex,Regex Lookarounds,我试图使用正则表达式来匹配系统发育树中的字符串(即物种名称+代码,例如diadema1479),以括号表示,但我无法成功处理所有括号 这是我的数据样本 (diadema1479:0.20268621848058304691,longipes1483:0.18941326141716441356):0.05754190478991345892,((sp1_11269:0.08954446656323425402,(davidovi11375:0.12866818058352805232):0.02

我试图使用正则表达式来匹配系统发育树中的字符串(即物种名称+代码,例如diadema1479),以括号表示,但我无法成功处理所有括号

这是我的数据样本

(diadema1479:0.20268621848058304691,longipes1483:0.18941326141716441356):0.05754190478991345892,((sp1_11269:0.08954446656323425402,(davidovi11375:0.12866818058352805232):0.02407442773179632040):0.11326732171695803875,(((S_willeyi:0.16019503647856672690,(((((S_sp2:0.13155607959902493320,S_sp3:0.04602288122852762897):0.09795419683476988548,S_sp4:0.03464730266968370220):0.06696262102745857703,S_sp5_Lombok:0.00000100000050002909):0.01699644302538915949,((S_javensis:0.12205647213742974733,(S_sp6:0.07046365005123975123,((yayukae12168:0.01496242382530112158,(yayukae12109:0.01287526689678352571...
当我使用:

/(?<=\()[^:]+/g

/(?这里有一个替代方法:
(\w+):
。在您的示例中,您似乎试图获取用户名或其他名称,在a之后(在a之前):。
\w+
查找“word”字符,
允许排除后面的浮点

此外,对于regexp测试,我永远无法推荐足够的网站:

只需在字符类中添加

(?<=\()[^(:]+
//     __^
(?这将起作用:

(?<=[(,])[^(:]+

(?无法找到
S_sp5_Lombok
longipes1483
,以及others@MonkeyZeus:是的,但是他们需要匹配吗?等待OP的澄清。我想知道同样的事情,这就是为什么我还没有投票的原因:-)@谢谢@MonkeyZeus
S_sp5_Lombok
longipes1483
不匹配,因为它们的名称前有逗号,而不是括号。我也需要让它们匹配;我在这里发布之前试图自己弄清楚这一点,但如果你们中有人能给我推荐的话,我到目前为止还没有成功非常欢迎。谢谢!@MonkeyZeus我刚刚看到了你下面的答案。这正是我想要的。谢谢!!你能从你的样本数据中列出所有预期的匹配项吗?
[^:()]
既不匹配冒号也不匹配括号。在最一般的情况下,只要确保
之后没有
)(
/)?