正则表达式 - 提取数字n字符

时间:2011-10-04 07:08:59

标签: regex

如何使用正则表达式从1960102214217F中提取数字n字符?

我尝试过这样的事情([0-9*])\+([A-Z*]),但结果返回匹配失败!!

5 个答案:

答案 0 :(得分:3)

您可以使用以下perl代码找到它:

$v = "1960102214217F";
$v =~ s/^(\d+)\D*$/$1/;

这意味着正则表达式/^(\d+)\D*$/会为您找到一个数字。这里^$相应地是字符串的开头和结尾。 \d代表数字,\D代表不是数字的所有内容。

答案 1 :(得分:1)

使用

([0-9]+)([A-Z])

*会弄乱数字匹配。

答案 2 :(得分:0)

尝试使用.NET:

([0-9]+)

如果你正在使用.NET,你可能会发现这个软件很方便:RegExp Designer

答案 3 :(得分:0)

*需要在括号之外,而不是在括号内。

所以试试

([0-9]*)+([A-Z]*)

答案 4 :(得分:0)

[0-9]+[A-Z]* 

将匹配。它只是表示一个或多个带有零个或多个大写字母的数字字符。那是你想要的吗? 如果您只想获得单个字母(只有一个),您可以使用:

(?<=\d+)([A-Z]{1})$
  • (?&lt; = \ d +)是一个或多个数字的后视
  • ([A-Z] *)是匹配组,将匹配一个或多个数字后面的零个或多个大写字母
  • $是字符串的结尾

比赛中不包括后卫。