Regex匹配数字后面的所有字母

  • 本文关键字:数字 Regex regex
  • 更新时间 :
  • 英文 :


我想匹配出现在数字后面的任何字母。句子中不能有其他数字

# example 1 one letter
> 'word 1 b'
> array(b)
# example 2 multiple letters
>'3c, d, e'
> array (c, d, e)
# example 3 no match
>'word 5'
> array()
# example 4 multiple letters multiple digits
>'words 12a b c'
> array(a, b, c) 

我已经尝试过[^d]+?([A-Za-z]),但这也匹配数字之前的字母,而不是附加到数字上的字母(例如在示例4中,12a或示例2中,3c)

既然这对你有效,下面是可能的解决方案:

(?:G(?!^)|d+)[^a-z]*K[a-z]
(?<=d.*)[a-z]

参见regex #1 demo和regex #2 demo。细节:

  • (?:G(?!^)|d+)-一个或多个数字或前一次成功匹配的结束
  • [^a-z]*-任何零个或多个非小写字母
  • K-匹配重置操作符丢弃到目前为止匹配的所有文本
  • [a-z]—小写字母。

第二个正则表达式的意思是:

  • (?<=d.*)-一个位置,前面紧接一个数字,然后是除换行符以外的任何零或多个字符,尽可能多
  • [a-z]-小写字母。

要排除单词and,可以使用

(?:G(?!^)(?:s+andb)?|d+)[^a-zn]*K[a-z]

查看这个正则表达式演示。或者,

(?<=d.*)[a-z](?<!bandb)(?!(?<=ban)db)(?!(?<=ba)ndb)

查看这个正则表达式演示。

听起来您可能需要的是一个零宽度组,该组是表达式所需的,但不是捕获的一部分。零宽度前视将使用它找到的任何数字,并且捕获的组将是数字之后的任何内容。

(?=d+)(w+)

最新更新