gpt4 book ai didi

regex - 如何在符合 POSIX BRE/ERE 的情况下更改我的表达式以返回相同的结果?

转载 作者:行者123 更新时间:2023-12-05 07:01:56 32 4
gpt4 key购买 nike

我正在尝试使用 Snowflakes 正则表达式实现,我刚刚发现它是 POSIX BRE/ERE。我之前设计了一个正则表达式,以允许我使用自定义分隔符(用于文本文件解析)识别所有不在双引号字符串部分的逗号。

示例文本字符串:

"Foreign Corporate Name Registration","99999","Valuation Research",,"Active Name",02/09/2020,"02/09/2020","NEVADA","UNITED STATES",,,"123 SOME STREET",,"MILWAUKEE","WI","53202","UNITED STATES","123 SOME STREET",,"MILWAUKEE","WI","53202","UNITED STATES",,,,,,,,,,,,

正则表达式命令和替换(在 regex101.com 中工作):

([("].*?["])*?(,)
\1#^#

Regex101.com(和期望的)结果:

"Foreign Corporate Name Registration"#^#"99999"#^#"Valuation Research"#^##^#"Active Name"#^#02/09/2020#^#"02/09/2020"#^#"NEVADA"#^#"UNITED STATES"#^##^##^#"123 SOME STREET"#^##^#"MILWAUKEE"#^#"WI"#^#"53202"#^#"UNITED STATES"#^#"123 SOME STREET"#^##^#"MILWAUKEE"#^#"WI"#^#"53202"#^#"UNITED STATES"#^##^##^##^##^##^##^##^##^##^##^##^#

因此,考虑到我现在才发现我不能使用惰性量词,那么任何 uber-regex'ers 都可以建议我如何改变我的表达式以返回相同的结果同时符合 POSIX BRE/ERE 吗?

最佳答案

你需要

  • 在这里将惰性量词转换为贪婪量词,因为它们仍将以与惰性量词相同的方式匹配
  • [("]匹配(或者",你只需要匹配"这个字符类,仅使用 "

最终的 POSIX ERE 表达式看起来像

("[^"]*")*(,)

匹配

  • ("[^"]*")* - " 出现零次或多次," 以外的一个或多个字符以及然后是 "(第 1 组)
  • (,) - 逗号(第 2 组)

注意:POSIX BRE 表达式看起来像 \("[^"]*"\)*\(,\),其中捕获组是用一对定义的转义括号。

关于regex - 如何在符合 POSIX BRE/ERE 的情况下更改我的表达式以返回相同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63710262/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com