【发布时间】:2012-11-27 01:18:36
【问题描述】:
我想解析如下字符串:
'serviceHits."test_server"."http_test.org" 31987'
到一个数组中:
[0] => serviceHits
[1] => test_server
[2] => http_test.org
[3] => 31987
基本上我想分割成点和空格,将引号内的字符串视为单个值。
这个字符串的格式不固定,这只是一个例子。它可能包含不同数量的元素,在不同的地方带有引号和数字元素。
其他字符串可能如下所示:
test.2 3 which should parse to [test|2|3]
test."342".cake.2 "cheese" which should parse to [test|342|cake|2|cheese]
test."red feet".3."green" 4 which should parse to [test|red feet|3|green|4]
有时 oid 字符串可能包含一个引号,如果可能的话应该包含它,但它是解析器中最不重要的部分:
test."a \"b\" c" "cheese face" which should parse to [test|a "b" c|cheese face]
我正在尝试从代理中解析 SNMP OID 字符串,这些字符串是由对 OID 应该是什么样子有不同想法的人编写的,以一种通用的方式。
将 oid 字符串(用点分隔的位)返回值(最后一个值)解析为单独的命名数组会很好。在解析字符串之前简单地分割空格是行不通的,因为 OID 和值都可以包含空格。
谢谢!
【问题讨论】:
-
你能再举几个你想要解析的字符串的例子吗
-
还有一些你迄今为止尝试过的例子。这是一个没有明显研究工作的编码请求。
-
抱歉,我想到目前为止没有人愿意看到我可怕的尝试。我拼凑了一些讨厌的正则表达式,但我没有保留测试文件,因为它们不能正常工作!
-
感谢您添加更多示例。请在下面查看我提交的内容,因为它通过了您的所有示例并允许转义引号、点和空格。