我有一大塊文本正在掃描,我正在用一些前綴爲某些文本的正則表達式進行搜索。從Ruby正則表達式返回特定的段
var1 = textchunk.match(/thedata=(\d{6})/)
從var1
我的結果將返回類似:
thedata=123456
如何,我只在上面剛剛123456的例子返回的搜索次數一部分,所以沒有采取var1
再剝離thedata=
關斷一行低於
我有一大塊文本正在掃描,我正在用一些前綴爲某些文本的正則表達式進行搜索。從Ruby正則表達式返回特定的段
var1 = textchunk.match(/thedata=(\d{6})/)
從var1
我的結果將返回類似:
thedata=123456
如何,我只在上面剛剛123456的例子返回的搜索次數一部分,所以沒有采取var1
再剝離thedata=
關斷一行低於
如果您希望字符串中只有一個匹配項,您可以使用自己的代碼並訪問屬性並獲取first
項(因爲你需要的數據與第一組形成捕獲組轉義括號的捕獲):
textchunk.match(/thedata=(\d{6})/).captures.first
如果你有多個匹配,只需使用scan
:
textchunk.scan(/thedata=(\d{6})/)
注:只匹配thedata=
隨後與個恰好 6位數,添加一個字邊界:
/thedata=(\d{6})\b/
^^
或先行(如果有可以後6位以外位數是字字符):
/thedata=(\d{6})(?!\d)/
^^^^^^
▶ textchunk = 'garbage=42 thedata=123456'
#⇒ "garbage=42 thedata=123456"
▶ textchunk[/thedata=(\d{6})/, 1]
#⇒ "123456"
▶ textchunk[/(?<=thedata=)\d{6}/]
#⇒ "123456"
後者使用positive lookbehind 。