我正在尝试创建一个正则表达式,它将捕获字符串的几个部分。这是我创建的表达式:
([0-9]{6}[-*][0-9xX]{7}).*([0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}).*([FPTSUCD])=?([01][*-])
它运行的字符串可以以两种不同的样式出现:
@ 141803-6310114 @3-0-2 T0-jL
或者
]@0-7-4 C1-vU
当我使用第一个字符串时,我得到了我需要的所有部分。
141803-6310114
3-0-2
T
0-
当我使用第二个字符串时,我没有匹配。第二次刺痛基本与第一次刺痛相同,但没有这部分“141803-6310114”。我希望表达式适用于两个字符串,但数字序列是可选的。任何人都可以建议表达式应该是什么样的吗?
答案 0 :(得分:1)
这将在两种情况下为您提供部件:
(?:(\d{6}[-*][\dxX]{7}))?[^\d]*(\d{1,3}-\d{1,3}-\d{1,3}) ([FPTSUCD])=?([01][*-])
使第一组可选(?)并将前两组之间的“全吃”改为“吃所有非数字”+其他清理以使其更具可读性(至少对我来说)。) / p>
此致