使用Ruby正则表达式解析out number

使用Ruby正则表达式解析out number,ruby,regex,Ruby,Regex,我需要从字符串中获取一个大的数字。我正在处理的两个案例是: 1) 当数字仅由数字组成时,如265038960 2) 当数字后面附加了一个字母时,比如69235M 我一直在使用正则表达式模式 (\d.+)[A-Z] 这适用于第二种情况,抓取不带“M”的“69235”,但在第一种情况下,如果找不到字母,则中断 如何使用正则表达式中的条件仅解析出数字,而不管字符串末尾是否有字母 (\d+[A-Z]?) # capture any number of digits, together wi

我需要从字符串中获取一个大的数字。我正在处理的两个案例是:

1) 当数字仅由数字组成时,如265038960

2) 当数字后面附加了一个字母时,比如69235M

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

(\d.+)[A-Z]
这适用于第二种情况,抓取不带“M”的“69235”,但在第一种情况下,如果找不到字母,则中断

如何使用正则表达式中的条件仅解析出数字,而不管字符串末尾是否有字母

(\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

看看

为什么不直接使用
/\d+/
<代码>s[/\d+/]?您是否只需要匹配特定字符串(并使用正则表达式“预验证”它们)?那么,你无论如何都需要锚。尝试
s[/\A(\d+)[A-Z]?\Z/,1]
。还是从更大的字符串中提取这些大数字块?然后使用
s.scan(/\b(\d+[A-Z]?\b/)
@WiktorStribiżew我假设OP试图在字母中捕获,如果它在那里的话。在
[A-Z]
之后添加一个
。您的输入字符串看起来如何,数字是如何分隔的?此外,您能否给出一些反例,即包含您不想匹配的数字和字母的子字符串?如果您只想要整数,请回忆一下
“69235M”。to_i#=>69235”