我正在读取非常混乱的文件,格式很少(如果有的话)。我正在寻找以下两个我能正常工作的东西。
我目前为Employee正则表达式使用的代码:
string employeeNumber = @"(?<grp1>[A-Z]{2})[0-9]{5}[A-Z]{2}";
这会找到所需的值,但也会发现无效的员工编号,因为它实际上并不是在以相反的顺序查找前两个大写字符。
最后,我要介绍的是如何<grp1>
以相反的顺序使用唯一的内容。
有效员工编号XY12345YX的示例。
我找不到有关任何类型的正则表达式组反转的良好文档。任何想法都会很棒!
编辑:
这是我正在阅读的文本文档中一行的示例。
'Name list from PQP-97 system &%$ Bill Williams MK12345KM [email protected] ^ %20%
Fredericka Hanover GW22887WG [email protected]'
试试这个:
/.*?([A-Z][a-z]*)\s+([A-Z][a-z]*)\s+(([A-Z])([A-Z])[0-9]{5}\5\4)\s+\(\S+@\S+).*/g
Regex101演示:https ://regex101.com/r/iB9vF2/2
解释:
.*?
-忽略姓氏前的任何垃圾
([A-Z][a-z]*)
-名字以大写字母开头,后跟任意数量的小写字母
\s+
-1个或多个空格标记名字的结尾
([A-Z][a-z]*)
-姓氏跟随名字,并遵循相同的模式
\s+
-姓氏以空格结尾
(([A-Z])([A-Z])[0-9]{5}\5\4)
-员工ID紧跟姓氏,格式为Capital1,Capital2,然后是5位数字,然后是Capital2(match5)和Capital1(match4)的重复
\s+
-空格显示员工编号的结尾
(\S+@\S+)
-@符号两侧的非空格字符组成了电子邮件*
.*
-这仅允许在字符串末尾添加垃圾。由于\S+
贪婪,它将与邮件不匹配,但是它将满足任何其他字符的需要,因此也代表了电子邮件的结尾。
*注意:电子邮件正则表达式过于简单;应该足以满足您的需求,但这无法检查有效的电子邮件,因为围绕这些电子邮件的规则很复杂。进一步阅读:使用正则表达式来验证电子邮件地址
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句