regex - 每行最后两个报价的正则表达式
问题描述
我将以下内容用作 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)
,但这不能省略第一个引号。
解决方案
也许您的解决方案不是匹配第三个和第四个双引号,而是连续的最后一对双引号(以及它们之间的内容)。
找到它们的正则表达式是:
"([^"]+)"(?!.*")
细节:
"
- 双引号。([^"]+)
- 除双引号外的字符序列,作为捕获组。"
- 第二个双引号。(?!.*")
- 双引号的负前瞻,在当前行的某个位置。这保证了之前捕获的是最后一对双引号。
例如,如果您用 替换每个匹配项'\1'
,则将相关的双引号更改为单引号。
有关工作示例,请参阅https://regex101.com/r/a7GyGS/1
推荐阅读
- python - 使用 Flask Web 和 opencv 进行 IP 摄像机流式传输的问题
- excel - 在运行时刷新 Ms 访问中的链接 Excel 文件路径
- c# - 尝试将字符串格式 (dd-mm-yyyy hh:mm:ss) 转换为 (yyyy-mm-dd hh:mm:ss) 日期格式
- python - FMUException: 未能设置实验
- javascript - 我应该绑定内置的 React 方法吗?
- wso2 - WSO2IS - 将验证码添加到密码重置流程
- qt - 如何通过 DEFINE 在 qt .pro 文件中添加路径
- apache-spark - Dataproc Spark Job 崩溃后无法找到 JVM 致命错误日志文件 (hs_err_pid.log)
- reactjs - 反应钩子。无法对未安装的组件执行 React 状态更新
- java - 如何清理 Java 飞行记录