1

我有以下字符串:

"\n  - MyLibrary1 (= 0.10.0)\n  - AFNetworking (= 1.1.0)\n  - MyLibrary2 (= 3.0.0)\n  - Objective-C-HMTL-Parser (= 0.0.1)\n\n"

我想创建一个这样的 JSON:

{
"MyLibrary1": "0.10.0",
"AFNetworking": "1.1.0",
"MyLibrary2": "3.0.0",
"Objective-C-HMTL-Parser": "0.0.1"
}

为此,我需要将“MyLibrary1”和“0.10.0”以及类似的其他数据分开来创建一个字符串。我正在研究一个正则表达式来将数据与字符串分开。

我试过了/-(.*)//=(.*)/但这会在-and之后返回我的所有内容=

有没有办法使用单个正则表达式获取所需的数据?另外,我如何让正则表达式知道它需要停在(or )。我正在使用Rubular来测试这个,每当我输入()我得到“你有一个无与伦比的括号”。

4

3 回答 3

1

似乎适用于您的样品。

 # -\s*(.*?)\s*\(\s*=\s*(.*?)\s*\)

 -
 \s* 
 ( .*? )        # (1)
 \s* 
 \(
 \s* 
 =
 \s* 
 ( .*? )        # (2)
 \s* 
 \)

或者,您可以进行一些温和的验证。请注意,惰性量词仅
用于修剪空白。

 # -\s*([^()=]*?)\s*\(\s*=\s*([^()=-]*?)\s*\)

 -
 \s* 
 ( [^()=]*? )  # (1)
 \s* 
 \(
 \s* 
 =
 \s* 
 ( [^()=-]*? )  # (2)
 \s* 
 \)
于 2014-09-16T19:02:11.567 回答
1

您可以使用以下正则表达式。

-\s*(\S+)\s*\(\s*=\s*(\S+)\s*\)

您的关键匹配结果将在捕获组#1中,值匹配结果将在组中#2

红色的

于 2014-09-16T18:47:04.857 回答
0
-\s{1}([A-Za-z0-9]+)\s+\(=\s+([0-9\.]+)\)

将返回匹配项:

$1 AFNetworking $2 1.1.0

ETC...

红色的

于 2014-09-16T18:50:48.987 回答