2016-06-16 19 views
1

我有一大塊文本正在掃描,我正在用一些前綴爲某些文本的正則表達式進行搜索。從Ruby正則表達式返回特定的段

var1 = textchunk.match(/thedata=(\d{6})/) 

var1我的結果將返回類似:

thedata=123456 

如何,我只在上面剛剛123456的例子返回的搜索次數一部分,所以沒有采取var1再剝離thedata=關斷一行低於

回答

1

如果您希望字符串中只有一個匹配項,您可以使用自己的代碼並訪問屬性並獲取first項(因爲你需要的數據與第一組形成捕獲組轉義括號的捕獲):

textchunk.match(/thedata=(\d{6})/).captures.first 

this IDEONE demo

如果你有多個匹配,只需使用scan

textchunk.scan(/thedata=(\d{6})/) 

注:只匹配thedata=隨後與個恰好 6位數,添加一個字邊界:

/thedata=(\d{6})\b/ 
       ^^ 

或先行(如果有可以後6位以外位數是字字符):

/thedata=(\d{6})(?!\d)/ 
       ^^^^^^ 
0
▶ textchunk = 'garbage=42 thedata=123456' 
#⇒ "garbage=42 thedata=123456" 
▶ textchunk[/thedata=(\d{6})/, 1] 
#⇒ "123456" 
▶ textchunk[/(?<=thedata=)\d{6}/] 
#⇒ "123456" 

後者使用positive lookbehind