我需要提取括號內的數字。數字的數量可以改變。正則表達式在括號'[]'中查找用逗號分隔的數字嗎?
實施例:
[2,5,8]
或
[11]
或
[3,7,9,12]
我需要能夠提取的最後一個號碼。問題是,JSON文件很長,包含大量的數字和文本。這些數字是我需要的唯一數字,也是唯一由逗號分隔的數字,AND沒有空格,並且被括號括起來。
到目前爲止,我已經試過正則表達式:
info.scan(/(\d,)+(\d?)\]/)
這是剛剛輸出的方括號。
我需要提取括號內的數字。數字的數量可以改變。正則表達式在括號'[]'中查找用逗號分隔的數字嗎?
實施例:
[2,5,8]
或
[11]
或
[3,7,9,12]
我需要能夠提取的最後一個號碼。問題是,JSON文件很長,包含大量的數字和文本。這些數字是我需要的唯一數字,也是唯一由逗號分隔的數字,AND沒有空格,並且被括號括起來。
到目前爲止,我已經試過正則表達式:
info.scan(/(\d,)+(\d?)\]/)
這是剛剛輸出的方括號。
要匹配在方括號中的最後一個號碼,你可以使用:
/\d+(?= *\])/
但是,如果輸入的是一個JSON字符串你可以使用JSON庫函數JSON.parse(string)
抓住你想要的號碼。
這可以提取括號內的最後一個數字。
# \[(?:\d+,)*(\d+)\]
\[
(?: \d+ ,)*
(\d+)
\]
不!它匹配數組內的所有數字。 –
@RajeshCO - 給我舉一個你如何使用它的例子。在我的機器上,這個正則表達式返回捕獲組1中的最後一個非逗號數字。 – sln
只需在rubular.com中檢查'\ [(?:\ d +,)*(\ d +)\]'與Anubhava提交的答案請。檢查它的數組'[1,2,4132312]'這是否正常工作? –
如果您收到JSON,然後做正確,實用,物,並使用JSON解析器將數據返回回一個對象,然後使用該對象的正常方法來訪問它的元素:
require 'json'
json_str = '{"array1":[2,5,8],"array2":[11],"array3":[3,7,9,12]}'
foo = JSON[json_str]
foo['array1'] # => [2, 5, 8]
foo['array2'] # => [11]
foo['array3'] # => [3, 7, 9, 12]
「Prettified」JSON的格式可能與普通JSON輸出不同,如果您嘗試使用正則表達式,那麼這種差異可能會毀了您的一天。如果您使用的解析器這是一個沒有腦子:
puts JSON.pretty_generate(foo)
# >> {
# >> "array1": [
# >> 2,
# >> 5,
# >> 8
# >> ],
# >> "array2": [
# >> 11
# >> ],
# >> "array3": [
# >> 3,
# >> 7,
# >> 9,
# >> 12
# >> ]
# >> }
puts JSON[JSON.pretty_generate(foo)]
# >> {"array1"=>[2, 5, 8], "array2"=>[11], "array3"=>[3, 7, 9, 12]}
它非常類似於使用正則表達式解析HTML和XML。如果JSON是手動構建的,使用算法而不是解析器,那麼格式也可以改變;無論哪種情況,您的代碼都有很高的破解機會。
什麼是正則表達式來獲取所有字符串內包含'[]'..的內容?我在學習,所以問你。 –
這將是:'/ \ [([^ \]] *)\] /' – anubhava
@anubhava:通過上面的exp,它將在所有方括號類型']'之前獲取數字但是它不是必需的它應該有起始括號'['。即如果我們有'12323,sdasd,89]',它將取89.但是,如何確定它也有一個起始方括號,然後只提取數字。 –