我有一个像folows一样的字符串:
"channel_changes":[[1313571300,26.879846,true],[1313571360,26.901025,true]]
我想提取角括号中的每个字符串,例如1313571300
,26.879846
,true
通过正则表达式。
我尝试过使用
string regexPattern = @"\[(.*?)\]";
但是第一个字符串为[[1313571420,26.901025,true]
即有一个额外的角撑。
请帮助我如何实现这一目标。
答案 0 :(得分:1)
对我来说,这似乎适用于Expresso:
\[([\w,\.]*?)\]
文字[
[1]:编号的捕获组。 [\ w。] *?]
- 本课程中的任何角色:[\ w,。],任意数量的重复,尽可能少 字面意思
问题似乎是“。”在你的正则表达式中 - 因为它正在拾取第一个字面“[”并考虑输入中的以下“[”作为下一个字符有效。
我将其限制为仅包含字母数字字符,逗号和文字句点(句点标记),因为这是您示例中的所有内容。你可以更进一步,真正指定那些内部方括号内的数据格式,假设它是一致的,并最终得到更像这样的东西:
\[[0-9.]+,[0-9.]+,(true|false)\]
示例C#代码:
var matches = Regex.Matches("\"channel_changes\":[[1313571300,26.879846,true],[1313571360,26.901025,true]]", @"\[([\w,\.]*?)\]");
foreach (var match in matches)
{
Console.WriteLine(match);
}
答案 1 :(得分:0)
试试这个:
@"\[+([^\]]+)\]+"
“[^]] +” - 表示除右方括号外的任何字符
答案 2 :(得分:0)