Regex 正则表达式可选递归模式

Regex 正则表达式可选递归模式,regex,Regex,我不知道如何捕捉字符串中的可选模式 要分析此字符串,请执行以下操作: Dalvik/1.6.0 Linux;U安卓4.4.4;Nexus 5构建/KTU84P 我使用的模式正是我所需要的: /^([^\/\s]*)\/([^\s]*)(\s\(([^()]*|\([^()]*\)*)\))?/ # returns # 1. Dalvik # 2. 1.6.0 # 3. (Linux; U; Android 4.4.4; Nexus 5 Build/KTU84P) # 4.

我不知道如何捕捉字符串中的可选模式

要分析此字符串,请执行以下操作: Dalvik/1.6.0 Linux;U安卓4.4.4;Nexus 5构建/KTU84P

我使用的模式正是我所需要的:

/^([^\/\s]*)\/([^\s]*)(\s\(([^()]*|\([^()]*\)*)\))?/

# returns
# 1.    Dalvik
# 2.    1.6.0
# 3.    (Linux; U; Android 4.4.4; Nexus 5 Build/KTU84P)
# 4.    Linux; U; Android 4.4.4; Nexus 5 Build/KTU84P
但是这个字符串可以有多次第一个模式,比如: 倭黑猩猩/1.0.3;多通道/1.5.2;Dalvik/1.6.0 Linux;U安卓4.4.4;Nexus 5构建/KTU84P

我想得到的是:

# 1.    Bonobo
# 3.    1.0.3
# 4.    Multipass
# 5.    1.5.2
# 6.    Dalvik
# 7.    1.6.0
# 8.    (Linux; U; Android 4.4.4; Nexus 5 Build/KTU84P)
# 9.    Linux; U; Android 4.4.4; Nexus 5 Build/KTU84P
但经过多次尝试后,我还是想不出来

有什么想法吗

非常感谢。

您需要对重复的字符串使用\G锚点,即由相同模式匹配的字符串

\G\s*([^\/\s]*)\/([^\s;]*);?(\s\(([^()]*|\([^()]*\)*)\))?

你用什么语言?