Я не знаю, как поймать необязательный шаблон в строке.Regex необязательный рекурсивный шаблон
Чтобы разобрать эту строку: Dalvik/1.6.0 (Linux; U; Android 4.4.4; Nexus 5 Build/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
Но эта строка может иметь первую скороговорку несколько раз, как: Bonobo/1.0.3; Multipass/1.5.2; Dalvik/1.6.0 (Linux; U; Android 4.4.4; Nexus 5 Build/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
Но после многих попыток, я не могу понять это.
Любая идея?
Большое спасибо.
Какой язык вы используете? –