我正在使用以下内容作为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",
是否有可以获取第三和第四个双引号的正则表达式? 即第 1 行变为"ZENDCUST" as 'End Customer ID',
这将在超过 5 个示例行中重复。
我能够使用"(?!sas)
但这无法省略第一个引号。
https://regexr.com/40jhr
也许您的解决方案不匹配第3 和第 4 个双引号, 但是连续的最后一对双引号(以及它们之间的内容(。
找到它们的正则表达式是:
"([^"]+)"(?!.*")
详:
"
- 双引号。([^"]+)
- 除双引号以外的字符序列,作为捕获组。"
- 第二个双引号。(?!.*")
- 双引号的负面展望,更远的地方 在当前行中。这保证了之前捕获的内容 是最后一对双引号。
例如,如果您用'1'
替换每个匹配项,则更改双引号 有问题成单个。
有关工作示例,请参阅 https://regex101.com/r/a7GyGS/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