2017-08-28 31 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