我正在讀取格式化字符串中的信息。 格式如下:「:」我想用正則表達式來提取數據是正則表達式來解析帶有轉義字符的字符串
"foo:bar:beer:123::lol"
之間的一切。如果a:後跟另一個:(如「::」),則其數據必須爲「」(一個空字符串)。
目前我與此正則表達式解析它:
(.*?)(:|$)
現在它來到了我的腦海裏「:」可以在數據中存在,也是如此。所以它必須逃脫。 例子:
"foo:bar:beer:\::1337"
我怎樣才能改變我的正則表達式,以便它匹配的「\:」作爲數據嗎?
編輯:我正在使用JavaScript作爲編程語言。對於複雜的調節表達式似乎有一些限制。該解決方案也應該在JavaScript中工作。
感謝, 麥克法蘭
我收到這個輸出: [「foo」,「」,「bar」,「」,「beer」,「」,「」:「,」「,」「,」1337「,」「] – McFarlane 2012-04-18 12:22:28
啊, 對。 RegexBuddy「足夠聰明」以省略多餘的空匹配,JavaScript和Python(我現在正在測試它)不是。讓我們看看我能否找到解決方案。 – 2012-04-18 12:26:10
您更新的示例與預期的數據相匹配,但它會一直返回[「」,「」]。在你的例子中,循環會導致無限循環,因爲匹配永遠不會爲空。我限制了while循環來做[subject.match(myregexp).length-1]迭代。不過,我會將您的答案標記爲正確,因爲正則表達式很棒。非常感謝您的努力。 – McFarlane 2012-04-18 12:56:41