我想從字符串中提取一個正好5位數的數字。需要正則表達式解析後的結果整數
如果我嘗試
\d{5}
這個工程的"12345"
或"a12345a"
,但它也匹配字符串"123456"
,我不希望在"12345"
。
我可以嘗試
\d{5}\D
但隨後的字符串"12345a"
將在` 「a12345a」 相匹配。有沒有拿到這個號碼?
我想從字符串中提取一個正好5位數的數字。需要正則表達式解析後的結果整數
如果我嘗試
\d{5}
這個工程的"12345"
或"a12345a"
,但它也匹配字符串"123456"
,我不希望在"12345"
。
我可以嘗試
\d{5}\D
但隨後的字符串"12345a"
將在` 「a12345a」 相匹配。有沒有拿到這個號碼?
要匹配一些正是五個數字,即使它是由字母所包圍,使用正則表達式
(?<!\d)\d{5}(?!\d)
這符合五個數字(\d{5}
),這既不是之前((?<!\d)
),也不遵循((?!\d)
)以數字表示。
單詞界限(\b
)在這裏不起作用,因爲他們不允許12345
匹配a12345a
。
在regex101.com上查看演示。
如果我無法斷言該怎麼辦?這是不可能的嗎? –
@AlexChap:你是什麼意思?我認爲這是你的目的,斷言在5位數比賽後沒有字母或數字? –
哦,我以爲你的意思是它只有在我斷言「精神上」時纔有效。無論如何,我的整個觀點是,數字後面可能會有一個字母,比如12345a,但對於12345a和a12345以及「12345」,它只會得到12345相同的字母。我希望你明白 –
/\d{5}[^\d]/
這匹配了一個由5位數字後跟非數字字符組成的序列。
發佈最後一位的正確方法是作爲答案,而不是問題的一部分。 – CrazyCasta
你測試了你的正則表達式嗎?它似乎不會匹配'12345d' ... – Jerry
我沒有足夠的聲望! –