我很努力地分離鍵和值的正則表達式匹配。perl正則表達式匹配單個字符分隔符
要求是分隔符是':',但密鑰可以有多個「::」。值可以有':',但鍵不能。所以第一個':'應該是分隔符。如果值之前有空格,則應該消除。
我有以下的正則表達式,但它失敗的關鍵:值,(沒有空間後':')。
if ($_ =~ /^(.+?):\s+(.*)$/)
{
$data{$1} = $2;
}
有效鍵值:
key:value
key: value
key: value::subvalue
key::subkey:value
key::subkey:value:subvalue
key::subkey: value:subvalue
key::subkey::subsubkey:value
注意項,子項的值,子值可以是任何文字內容替換。 我的正則表達式適用於除第一個之外的所有其他正則表達式。
任何想法?
我可以有一個elsif並添加另一個正則表達式,但我不知道是否可以有一個單一的正則表達式的整個事情。
感謝,
我們可以得到有效和無效的字符串的樣本集? – Vache
我添加了一些示例鍵值。 – Amir
@阿米爾:拜託,你能否加入無效的例子? –