匹配花括号之间的所有内容 - 正则表达式
Matching all contents between curly braces - Regex
我想在 {
和 },
之间进行解析。我搜索并尝试了很多来自 Whosebug 的解决方案,但似乎并非所有解决方案都有效。
最适合我的解决方案是 Extracting all values between curly braces regex php,但当有嵌套的花括号时它会失败。我试过了 {\K[^}]*(?=},)
例如:Id: 1181 不匹配。
示例数据
{
Id: 1180
Name: "ABCD"
Type: 1
Json: <"
Some sample data
">
},
{
Id: 1181
Name: "EFGH"
Type: 4
More: Value
More: Value
Json: <"
Some sample data "{ with more curly braces }" and "{ more curly braces }";
">
},
{
Id: 1182
Name: "IJKL"
Type: 2
Json: <"
Some sample data
">
},
出色的结果
如果没有这种格式的规范,就没有解析输入的干净解决方案。使用正则表达式只能部分帮助您,因为 "Json" 字段中可能有任何实用的东西。
如果您需要一个快速而肮脏的解决方案,您可以使用卷曲位于行首的事实。
$m = preg_split('~^},$~m', $data);
或
preg_match_all('/\{.*?^\},$/ms', $str, $matches, PREG_SET_ORDER);
从那时起,您可以随心所欲地处理数据。
你可以使用这个recursive regex in PHP:
$regex = '/ { ( (?: [^{}]* | (?R) )* ) } /x';
我想在 {
和 },
之间进行解析。我搜索并尝试了很多来自 Whosebug 的解决方案,但似乎并非所有解决方案都有效。
最适合我的解决方案是 Extracting all values between curly braces regex php,但当有嵌套的花括号时它会失败。我试过了 {\K[^}]*(?=},)
例如:Id: 1181 不匹配。
示例数据
{
Id: 1180
Name: "ABCD"
Type: 1
Json: <"
Some sample data
">
},
{
Id: 1181
Name: "EFGH"
Type: 4
More: Value
More: Value
Json: <"
Some sample data "{ with more curly braces }" and "{ more curly braces }";
">
},
{
Id: 1182
Name: "IJKL"
Type: 2
Json: <"
Some sample data
">
},
出色的结果
如果没有这种格式的规范,就没有解析输入的干净解决方案。使用正则表达式只能部分帮助您,因为 "Json" 字段中可能有任何实用的东西。
如果您需要一个快速而肮脏的解决方案,您可以使用卷曲位于行首的事实。
$m = preg_split('~^},$~m', $data);
或
preg_match_all('/\{.*?^\},$/ms', $str, $matches, PREG_SET_ORDER);
从那时起,您可以随心所欲地处理数据。
你可以使用这个recursive regex in PHP:
$regex = '/ { ( (?: [^{}]* | (?R) )* ) } /x';