正则表达式表示每行最后两个引号



我正在使用以下内容作为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

相关内容

  • 没有找到相关文章

最新更新