2017-08-28 57 views
-1

我有一种情况,我需要从字符串中获取大数。这两种情况我的工作是:使用Ruby正则表达式解析出数字

1)当数由唯一号码,例如265038960

2)当数后有一个字母,像69235M

我一直在使用正则表达式模式

(\d.+)[A-Z] 

这适用于第二种情况和抓斗“69235”没有“M”,但如果没有找到一个字母在第一种情况下休息。

如何使用正则表达式中的条件只解析出字符串是否出现在字符串末尾?

+0

为什么不直接使用'/ \ d + /'? 'S [/ \ d + /]'?你只需要匹配特定的*字符串*(和“预先验证”他们与正则表达式)?那么,无论如何你都需要锚。试试'[/ \ A(\ d +)[A-Z]?\ z /,1]'。还是你从更大的字符串中提取这些大数字块?然后使用's.scan(/ \ b(\ d +)[A-Z]?\ b /)' –

+0

@WiktorStribiżew我假设操作系统试图捕获信件,如果它在那里的话。 – vcsjones

+2

在'[A-Z]'后添加'?'。 – kabanus

回答

1
(\d+[A-Z]?)  # capture any number of digits, together with 0 or 1 uppercase letter 

您不清楚您是否要截取该字母。在这种情况下,你要处理的信:

(\d+)[A-Z]?  # capture any number of digits, followed by 0 or 1 uppercase letter 

example