gpt4 book ai didi

java - 正则表达式 - 仅当前一部分匹配时才匹配此部分

转载 作者:行者123 更新时间:2023-12-01 06:07:14 25 4
gpt4 key购买 nike

我的文本采用以下格式:

<command>,<cabinet>,<drawer>,<report>

规则是:

<command> :仅限 3 位数字字母,
<cabinet> :1-4位数字,
<drawer> :A 到 I 之间的 1 位字母数字,
<report> :1-4位数字

只有前一个分段存在,每个分段才有意义。可以假设 Cabinet 始终存在,否则仅查找命令是没有用的。

示例:

SRH,898
SRH,898,G
SRH,898,G,900

非示例:

SRH,,,898          // <report> without <cabinet> or <drawer>
SRH,898,,900 // <report> without <drawer>. Take only upto SRH,898 .. ignoring the rest

我想出了这个:[a-z$]{3},\d{1,4},([a-i])?(,\d+)?

问题:
SRH,898,,900这样的情况对此正则表达式有效,但理想情况下它应该无效,如 <report> ( 900 ) 不存在 <drawer> 。我希望它尝试匹配 <report> 仅当 <drawer>存在,在这种情况下,<drawer>将由 , 分隔来自<report> ,如果<report>也存在。

我想我可以在两个循环中执行此操作,第二个循环将过滤掉连续的 , -s ,但希望可以做得更好。

有什么帮助吗?

谢谢

最终更新:https://regex101.com/r/i7HnLf/3是好东西:) 感谢您的所有帮助:)

最佳答案

即使您设法想出一个正则表达式来执行您想要的操作,即保留先前匹配的段的状态,它也几乎不可能维护。

由于您要打开并解析每个文件,因此最好在代码中明确处理您的要求。

关于java - 正则表达式 - 仅当前一部分匹配时才匹配此部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923134/

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