Regex 动态数据过滤正则表达式

Regex 动态数据过滤正则表达式,regex,Regex,我有一份包含许多部门人员顺序的文件,如下所示: L1: Member1 (0981234567); L2: Member2 (0981234568); L3: Member3 (0981234569) L1: Member1 (0981234567); L2: Member2 (0981234567), Member3 (0981234567); L3: Member4 (0981234567) L1: Member1 (0981234527); L2: Member2 (0981244567)

我有一份包含许多部门人员顺序的文件,如下所示:

L1: Member1 (0981234567); L2: Member2 (0981234568); L3: Member3 (0981234569)
L1: Member1 (0981234567); L2: Member2 (0981234567), Member3 (0981234567); L3: Member4 (0981234567)
L1: Member1 (0981234527); L2: Member2 (0981244567), Member3 (0921234567), Member4 (0981234567); L3: Member5 (0981254567)
我需要编写一个正则表达式来过滤具有上述结构的所有行。我试过:

L1: [a-zA-Z0-9]{3,15} \([0-9]{10}\); L2: [a-zA-Z0-9]{3,15} \([0-9]{10}\); L3: [a-zA-Z0-9]{3,15} \([0-9]{10}\)
但问题是,我的数据L2可能有1人、2人或3人,我不知道如何处理这些情况,请帮助我。

您可以选择为L2重复该成员部分。如果您还希望L1和L3也使用相同的机制,那么可以重用相同的机制

L1: [a-zA-Z0-9]{3,15} \([0-9]{10}\); L2: [a-zA-Z0-9]{3,15} \([0-9]{10}\)(?:, [a-zA-Z0-9]{3,15} \([0-9]{10}\))*; L3: [a-zA-Z0-9]{3,15} \([0-9]{10}\)*

如果L1、L2和L3的顺序已经正常,您可以将其缩短为重复模式,并使用
\d
\d+
匹配
L

^(?:L\d: [a-zA-Z0-9]{3,15} \([0-9]{10}\)(?:, [a-zA-Z0-9]{3,15} \([0-9]{10}\))*(?:; |$))+

参见另一个

您可以选择为L2重复该成员部分。如果您还希望L1和L3也使用相同的机制,那么可以重用相同的机制

L1: [a-zA-Z0-9]{3,15} \([0-9]{10}\); L2: [a-zA-Z0-9]{3,15} \([0-9]{10}\)(?:, [a-zA-Z0-9]{3,15} \([0-9]{10}\))*; L3: [a-zA-Z0-9]{3,15} \([0-9]{10}\)*

如果L1、L2和L3的顺序已经正常,您可以将其缩短为重复模式,并使用
\d
\d+
匹配
L

^(?:L\d: [a-zA-Z0-9]{3,15} \([0-9]{10}\)(?:, [a-zA-Z0-9]{3,15} \([0-9]{10}\))*(?:; |$))+
请参阅另一个

尝试以下操作:-

/^(?:L[1-3]: (?:[a-z\d]{3,15} \(\d{10}\), )*[a-z\d]{3,15} \(\d{10}\)(?:; |$))+$/gmi
试试这个:-

/^(?:L[1-3]: (?:[a-z\d]{3,15} \(\d{10}\), )*[a-z\d]{3,15} \(\d{10}\)(?:; |$))+$/gmi

谢谢,但是我如何按级别获取成员信息,(L1->列出成员级别1,L2->列出成员级别2…)我是否需要使用正则表达式输出字符串“L1:Member1(0981234527)”并处理该字符串以删除额外的characters@Joe这取决于工具或语言,但是,匹配您想要的,然后在处理之后,得到您想要的确切零件可能会更容易。例如,如果您只有一个成员,则可以使用单个捕获组获取
0981234527
。如果同一级别有多个数字,这取决于工具或语言功能。谢谢,但如何按级别获取成员信息,(L1->列出成员级别1,L2->列出成员级别2…)是否需要使用正则表达式输出字符串“L1:Member1”(0981234527)'并处理该字符串以删除额外的characters@Joe这取决于工具或语言,但可能更容易匹配您想要的内容,然后在处理之后,获得您想要的确切部分。例如,如果您只有一个成员,则可以使用单个捕获组获取
0981234527
。如果同一级别有多个数字,则取决于工具或语言以及功能。