将字符串中的数字与字母和数字匹配

use*_*021 0 regex perl

我需要编写一个Perl正则表达式来匹配单词中的数字和字母和数字.示例: test123.我想编写一个只匹配数字部分并捕获它的正则表达式

我正在尝试这个\S*(\d+)\S* ,它只捕获3但不捕获123.

ike*_*ami 9

正则表达式原子将尽可能多地匹配.

最初,第一个\S*匹配" test123",但正则表达式引擎必须回溯以允许\d+匹配.结果是:

 +------------------- Matches "test12"
 |    +-------------- Matches "3"
 |    |    +--------- Matches ""
 |    |    |
---  ---  ---
\S* (\d+) \S*
Run Code Online (Sandbox Code Playgroud)

所有你需要的是:

my ($num) = "test123" =~ /(\d+)/;
Run Code Online (Sandbox Code Playgroud)

它将尝试匹配位置0,然后位置1,...直到找到一个数字,然后它将匹配尽可能多的数字.