2015-02-10 37 views
-3

我有一個要求在序列中匹配12個數字,但我被限制在第9個數字。有沒有辦法超越9場比賽?

我的字符串是一樣的東西

{"Column5": "Null", "Column4": "Null", "Column6": "Null", "Column1": "END", "Column3": "Null", "Column2": "Null"} 

,其中,列是固定的,但在地方空的就不可能有任何序列/字符。

我試着匹配列和隨後的字符串,但我有12場比賽,而我的限制,直到只有9美元。

有什麼建議嗎?

+5

你的代碼在哪裏? – Prix 2015-02-10 07:42:59

+8

看起來像JSON,爲什麼不使用JSON解析器? – Biffen 2015-02-10 07:45:49

回答

2

您可以輕鬆地把你匹配到一個實際的數組,而不是依靠$1,朋友們:

my @matches = $some_string =~ /(some) (regex) with (m)(a)(n)(y) (c)(a)(p)(t)(u)r(e)(s)/;

或者,如在評論所說,使用JSON解析器,如果你解析JSON數據。它比基於快速正則表達式的解決方案更可靠。

1

請使用Dave Sherohman's suggestion關於使用JSON解析器,或至少使用實際數組來存儲匹配。

Perl對捕捉數量沒有硬性限制(或者限制太高以至於沒有合理的腳本會遇到)。 The code in this answereven the script in the question表明您可以像平常一樣參考捕獲組中的匹配文本,即組10與$10,組100與$100

(萬一有人混亂,$1$10,...的變量使用正則表達式外指捕獲組的內容。這不是語法反向引用(如\1\10,...或\g{1},\g{10},...),其在正則表達式中用於匹配由捕獲組捕獲的相同文本)。

相關問題