我有一个具有以下结构的字符串:
ABCD123456EFGHIJ78,但有时缺少数字或类似这样的字符
ABC123456EFGHIJ78或 ABCD123456E或 ABCD12345EFGHIJ78 等等
这就是为什么我需要正则表达式。
我要提取的是第三组的第一个字母,在这种情况下为“ E”。
我有以下正则表达式:
(\D+)+(\d+)+(\D{1})\3
但我没有收到字母E。
答案 0 :(得分:2)
这似乎适用于您提供的示例案例。
^(?:[A-Za-z]+)(?:\d+)(.)
假定第一组仅是字母,第二组仅是数字。
答案 1 :(得分:0)
已经有一个不错的答案。
但根据记录,您的最初建议非常接近工作。您只需要说与第三组匹配的字符可以通过添加星号重复几次:
^(\D+)(\d+)(\D{1})\3*
主要缺点是\D
匹配除数字以外的任何字符,因此也匹配空格。使其更加健壮可以使我们明确接受的字符范围:
^([A-Za-z]+)(\d+)([A-Za-z]{1})\3*
这要好得多,但是我最喜欢的方法是使用\w
来在模式结尾匹配任何非白色字符:
([A-Za-z]+)(\d+)([A-Za-z]{1})\w*