首页 > 解决方案 > 每行最后两个报价的正则表达式

问题描述

我将以下内容用作 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

标签: regex

解决方案


也许您的解决方案不是匹配第三个和第四个双引号,而是连续的最后一对双引号(以及它们之间的内容)。

找到它们的正则表达式是:

"([^"]+)"(?!.*")

细节:

  • "- 双引号。
  • ([^"]+)- 除双引号外的字符序列,作为捕获组。
  • "- 第二个双引号。
  • (?!.*")- 双引号的负前瞻,在当前行的某个位置。这保证了之前捕获的是最后一对双引号。

例如,如果您用 替换每个匹配项'\1',则将相关的双引号更改为单引号。

有关工作示例,请参阅https://regex101.com/r/a7GyGS/1


推荐阅读