gpt4 book ai didi

# 分隔记录的 Java 正则表达式

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

我有以下格式的文本行。它是最多 6 列的固定段记录,以逗号分隔,并且可以重复一次或多次。段分隔由 # 分隔

示例:
行中的单个记录:

AA,123,SRC,DES,X,ABCD123

行中有两条记录:

AA,123,SRC,DES,X,ABCD123#AB,234,SRC,DES,X,ABCD234

我正在寻找此结构模式的构建正则表达式。到目前为止,我已经根据我的要求构建了部分正则表达式(不区分大小写)。

regexp ="^([a-z]{2},[a-z0-9]{1,5},[a-z]{3},[a-z]{3},[a-z]{1}(,[a-z0-9]{1,25})?)+$" 

我正在努力寻找重复的片段。这是一个包含一些分隔符表达式信息的链接,但我无法合并它。有人可以帮我理解吗?

JAVA RegEx on _ delimited string

最佳答案

如果您想确保您的匹配受到行或 # 分隔符的限制,您可以使用 (^|(?<=#))在开始处匹配行的开头或确保其前面有 # 和 ($|(?=#))在末尾匹配行尾或确保其后跟 #

这是完整的正则表达式

(?mi)(^|(?<=#))([a-z]{2},[a-z0-9]{1,5},[a-z]{3},[a-z]{3},[a-z]{1}(,[a-z0-9]{1,25})?)($|(?=#))

参见demo获取结果和进一步解释

您还可以使用 (?: 将某些组指定为非捕获组。这样您只能为每个记录获得一个匹配项,例如

(?mi)(?:^|(?<=#))([a-z]{2},[a-z0-9]{1,5},[a-z]{3},[a-z]{3},[a-z]{1}(?:,[a-z0-9]{1,25})?)(?:$|(?=#))

查看更新demo

关于# 分隔记录的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29288292/

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