我想从类似命令的字符串中提取一些组,格式为:
所以第一个参数中可以出现逗号!
由于第二个参数总是以数字开头,我可以匹配第一个参数逗号,后面没有数字,但是我不能用lookahead来做:(
到目前为止,这是我的尝试:
(\w+)\(([a-zA-Z0-9_\-\{\}~]+)(,(\d+(\.\d+)?))?\)\.
...但是示例3与此不匹配。
(\w+)\(([a-zA-Z0-9_\-\{\}~\,(?!\d)]+)(,(\d+(\.\d+)?))?\)\.
......这个人不会让我抓住这些团体> 2(负向前瞻不影响第一个逗号)
任何帮助将不胜感激!非常感谢提前:))
答案 0 :(得分:2)
如果{}应该包含任何内容,那么这可能会有效吗?
(\w+)\(([a-zA-Z0-9_\-~]+(\{.*\})?),(.+)\)\.
答案 1 :(得分:1)
这似乎可以解决问题:
(.*?)(?:\(|\)|,(?=\d))
Expl。:将任何内容与'(',')'或','后跟数字匹配。
如果您想要允许任意空格:
\s*(.*?)\s*(?:\(|\)|,(?=\d))\s*
使用全局标志来获取所有实例。
此致