Regex 正则表达式:返回正则表达式定义中带分隔符的所有组

Regex 正则表达式:返回正则表达式定义中带分隔符的所有组,regex,Regex,我发布这个问题是因为我已经找了几个小时了,没有任何机会 我想识别一个逗号分隔的项目列表,可能有些项目本身包含逗号 i、 e.分析这一点: foo CHAR (10) "NVL(:D_1, ' ')", bar CHAR ( 25 ) 并找到以下组:(使用) 目前,使用以下正则表达式: (?:|\G(?!^),)(\w+)\s(CHAR\s*\(\s*(\d+)\s*\)|TIMESTAMP\s*\"YYYY-MM-DD HH24:MI:SS.FF\")\s*((?:\"NVL\(\w*\,\s

我发布这个问题是因为我已经找了几个小时了,没有任何机会

我想识别一个逗号分隔的项目列表,可能有些项目本身包含逗号

i、 e.分析这一点:

foo CHAR (10) "NVL(:D_1, ' ')", bar CHAR ( 25 )
并找到以下组:(使用)

目前,使用以下正则表达式:

(?:|\G(?!^),)(\w+)\s(CHAR\s*\(\s*(\d+)\s*\)|TIMESTAMP\s*\"YYYY-MM-DD HH24:MI:SS.FF\")\s*((?:\"NVL\(\w*\,\s* \' \'\)\"){0,1})

我只设法找到({0,1}基数为0):

我提前感谢您的时间和建议

解决方案:

(?:|\G(?!^),)(\w+)\s(CHAR\s*\(\s*(\d+)\s*\)|TIMESTAMP\s*\"YYYY-MM-DD HH24:MI:SS.FF\")\s*(\"NVL\(:?\w*\,\s* \' \'\)\")?

您没有与
NVG(:D_1

尝试:


我刚刚输入了一个
:?
,但我不知道你的要求是什么。

你似乎有一些随机的分隔符,你能解释得更详细一点吗?例如,为什么它会拆分多次,因为你到目前为止只提到它应该在逗号上拆分,而逗号不是单词的一部分,而我看到的唯一分隔符就是那个在
''之后,
..@Voidpaw:据我所知,
\G(?!^),
定义了分割。我希望它在
“NVL(:D_1,”)
之后分割,而不是在
之后:D_1
这是你想要的结果吗?非常感谢@OGHaza:就是这样。我用解决方案更新了我的问题(小组小变动).祝你愉快day@jhoelter没问题
0: [0,14] foo CHAR (10) 
1: [0,3] foo
2: [4,13] CHAR (10)
3: [10,12] 10
4: [14,14] 
(?:|\G(?!^),)(\w+)\s(CHAR\s*\(\s*(\d+)\s*\)|TIMESTAMP\s*\"YYYY-MM-DD HH24:MI:SS.FF\")\s*(\"NVL\(:?\w*\,\s* \' \'\)\")?
(?:|\G(?!^),)(\w+)\s(CHAR\s*\(\s*(\d+)\s*\)|TIMESTAMP\s*\"YYYY-MM-DD HH24:MI:SS.FF\")\s*((\"NVL\(:?\w*\,\s* \' \'\)\")?)