我有以下字符串:
test_abc123_firstrow test_abc1564_secondrow test_abc123_abc234_thirdrow test_abc1663_fourthrow test_abc193_abc123_fifthrow
我想得到每一行的abc +后面的数字。但是如果它有多个数字,就只取第一个。我当前的模式如下所示:第一个月但这不仅仅是第一个。如果有人能帮我实现它,那就太好了。
vi4fp9gy1#
使用以下正则表达式:第一个月1.使用^从输入的起始处开始
^
.*?
rta7y2nd2#
您可以使用
^.*?([aA][bB][cC]\d+[a-z]*)
注意删除的\w,它匹配字母、数字和下划线,因此在您的模式中看起来是多余的。在开头添加的^.*?与
\w
^.*?
([aA][bB][cC]\d+[a-z]*)
a
A
b
B
c
C
2条答案
按热度按时间vi4fp9gy1#
使用以下正则表达式:
第一个月
1.使用
^
从输入的起始处开始.*?
尽可能少地匹配零个或多个字符(换行符除外)(惰性方法)1.然后,捕获组将按预期捕获其余部分。
Demo
rta7y2nd2#
您可以使用
注意删除的
\w
,它匹配字母、数字和下划线,因此在您的模式中看起来是多余的。在开头添加的
^.*?
与^
-字符串开始.*?
-除换行符外的任何零个或多个字符,尽可能少([aA][bB][cC]\d+[a-z]*)
-捕获组1:a
或A
、b
或B
、c
或C
,然后是一个或多个数字,然后是零个或多个小写ASCII字母。