要获得一组字符和一些整数之后的第一个字母,正则表达式将是什么?

时间:2019-03-22 18:25:06

标签: regex

我有一个具有以下结构的字符串:

ABCD123456EFGHIJ78,但有时缺少数字或类似这样的字符

ABC123456EFGHIJ78或 ABCD123456E或 ABCD12345EFGHIJ78 等等

这就是为什么我需要正则表达式。

我要提取的是第三组的第一个字母,在这种情况下为“ E”。

我有以下正则表达式:

(\D+)+(\d+)+(\D{1})\3

但我没有收到字母E。

2 个答案:

答案 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*