我将以下内容用作SQL查询的一部分,这让我着迷于尝试解决这一问题:
"ZENDCUST" as "End Customer ID",
"ZCENCSLS___T" as "End Customer Desc",
"ZCENCSLS__0CUST_GROUP" as "Cust Grp-EC-MD ID",
"ZCENCSLS__0CUST_GROUP___T" as "Cust Grp-EC-MD Desc",
"ZENDCUST__0CITY" as "End Customer City",
是否存在可以获取第三和第四双引号的RegEx?
即第1行变成
"ZENDCUST" as 'End Customer ID',
这将在5个以上示例行中重复进行。
我可以使用\"(?!\sas)
,但这不能省略第一个引号。
答案 0 :(得分:2)
也许您的解决方案与第三和第四双引号不匹配, 但最后一对是双引号(以及它们之间的双引号)。
找到它们的正则表达式为:
"([^"]+)"(?!.*")
详细信息:
"
-双引号。([^"]+)
-除双引号以外的一系列字符,作为捕获组。"
-第二个双引号。(?!.*")
-双引号的负向超前查找,进一步
在当前行中。这保证了以前捕获的内容
是最后一对双引号。例如用'\1'
代替每个匹配项,您可以更改双引号
问题成一个。
有关工作示例,请参见https://regex101.com/r/a7GyGS/1
答案 1 :(得分:1)
如果您使用的工具或语言在其正则表达式集中支持先行,那么您将可以使用正先行。您还应该启用m
标志:
"(?=[^"]*(?:"[^"]*)?$)
故障:
" # Match a double quotation mark
(?= # Start of a positive lookahead
[^"]* # Match anything but a "
(?: # Start of a non-capturing group
"[^"]* # Match one " and anything but a "
)? # End of non-capturing group, optional
$ End of line
) # End of positive lookahead