我正在尝试使用正向和反向查找来提取括号之间的数据,并且我需要使用与括号数量相同的捕获组数。我面临的问题是,当我尝试使用多个捕获组时,没有匹配项,但是如果我仅使用一个捕获组,则工作正常。我必须对正则表达式进行哪些更改以使其与适当的数据匹配。我与数据一起使用的正则表达式为here。我想在AWS Athena中使用它从我的S3存储桶对象中读取数据。
我尝试了其他各种方法,但是先行确定了此方法,因为它确保不捕获括号。
((?<=VERS\=\()[^\)]*(?=\)))((?<=UUID\=\()[^\)]*(?=\)))
预期结果是,第一个捕获组从第一个括号捕获数据,第二个捕获组从第二个括号捕获数据。
答案 0 :(得分:0)
如果要匹配其中任何一个,则可以添加管道|
,这意味着两个部分之间是交替的,并在捕获组之外进行环视。
请注意,您不必在字符类内转义=
和)
。
(?<=VERS=\()([^)]*)(?=\))|(?<=UUID=\()([^)]*)(?=\))
^
除了使用环顾四周之外,您还可以匹配以下两个部分:
VERS=\(([^)]+)\);UUID=\(([^)]+)\);