我有这个正则表达式验证字符串是否有效作为一组三个参数,如下所示:
(?<set>(?<field>(.+))\s*\,\s*(?<Type>(.+))\s*\,\s*(?<value>(\?)))
适用于此字符串
FIELD1,INTEGER,?
如何扩展正则表达式以检查重复集,例如
FIELD1,INTEGER,?,FIELD2,INTEGER,?,FIELD1,STRING,?
答案 0 :(得分:0)
首先要删除其中的几个组(在您指定的捕获组中),您必须使正则表达式更加清晰。然后将?
添加到指定捕获组中的+
,以便它们不会贪婪。还需要添加一个可选的,
和整个完整集的量词,以便在您描述时可以多次重复该组。
1 2 3 4
v v vvvvvv vv
(?<set>(?<field>.+?)\s*\,\s*(?<Type>.+?)\s*\,\s*(?<value>\?)(?:[,]*))+?
(?<field>(.+))
- &gt; (?<field>.+?)
(?<Type>(.+))
- &gt; (?<Type>.+?)
(?:[,]*)
(您不需要[]
只是为了清晰)+?
有关完整示例,请参阅https://regex101.com/r/USM9lP/1