【问题标题】:What would be the Regex expression to get the first letter after a group of character and some integers?在一组字符和一些整数之后获取第一个字母的正则表达式是什么?
【发布时间】:2019-03-22 18:25:05
【问题描述】:

我有一个字符串,结构如下:

ABCD123456EFGHIJ78 但有时会缺少数字或字符,例如:

ABC123456EFGHIJ78 或 ABCD123456E 或 ABCD12345EFGHIJ78 等等。

这就是我需要正则表达式的原因。

我要提取的是第三组的第一个字母,在本例中为“E”。

我有以下正则表达式:

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

但我没有收到字母 E。

【问题讨论】:

标签: regex


【解决方案1】:

这似乎适用于您提供的示例案例。

^(?:[A-Za-z]+)(?:\d+)(.)

假设第一组只有字母,第二组只有数字。

【讨论】:

    【解决方案2】:

    已经有一个很好的答案。

    但据记录,您最初的提案非常接近工作。你只需要说匹配第3组的字符可以通过添加星号重复多次:

    ^(\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*
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多