我正在读取格式化字符串中的信息。 格式如下:“:”我想用正则表达式来提取数据是正则表达式来解析带有转义字符的字符串
"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