gpt4 book ai didi

c# - 在正则表达式中匹配多个零星组

转载 作者:行者123 更新时间:2023-11-30 21:24:49 24 4
gpt4 key购买 nike

我正在处理一些以专有字符串格式存储其数据的遗留代码,我正在尝试创建一个正则表达式来更轻松地解析这种格式。

我遇到的问题是格式包含可以偶尔重复多次的组。例如,通常数据看起来像这样 (A)(B)(B)(B),但有时它可能有多个 (A),例如 (A)(B)(B)(B)(A) (B)(B),甚至 (A)(A)(B)(B)(B)。 (B) 的重复次数也可以变化,少则无,多则很多。

发生的事情是,当数据看起来像 (A)(B)(B)... 时,我当前的正则表达式工作正常,但当字符串中后面有另一个 (A) 时它会中断。第一个 (A) 被抓到,但所有剩余的 (A) 都没有。

所以基本上现在我有一个正则表达式,它有一个用于解析 (A) 的组和一个用于解析 (B) 的组,这些组可以独立工作,但我不知道如何组合这些在它们之间使用正确的重复语法,以便找到分散的匹配项,而不是只忽略第一个,其余的被忽略。

我是不是遗漏了什么,或者我是否必须将我的正则表达式分成两个单独的正则表达式并分别解析出 (A) 和 (B)? (我正在使用 C#/.Net)

最佳答案

如果您有一个匹配 (A) 的工作模式和另一个匹配 (B) 的工作模式,那么匹配其中任意数量的表达式是

(?:(A)|(B))*

如果这就是您所需要的,则无需花哨。此表达式匹配 (A)(B) 任意次数,但将组的捕获留给 AB 级别。

关于c# - 在正则表达式中匹配多个零星组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1019312/

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