Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从子组中删除元素_Regex_Regex Group - Fatal编程技术网

Regex 从子组中删除元素

Regex 从子组中删除元素,regex,regex-group,Regex,Regex Group,我有以下字符串,我需要调整数组中的零元素,出于某些原因,我必须使用正则表达式,因为我使用的脚本语言无法序列化/反序列化,我只有一个正则表达式引擎 字符串: { "admins": [0, 148, 10, 0, 0, 0, 0, 0, 0, 0, 0], "auth": "30639096bfe4ec4b9f17696ef1d02b9a", } 并输出如下字符串: { "admins": [148], "auth": "30639096bfe4ec4b9f17696ef

我有以下字符串,我需要调整数组中的零元素,出于某些原因,我必须使用正则表达式,因为我使用的脚本语言无法序列化/反序列化,我只有一个正则表达式引擎

字符串:

{
   "admins": [0, 148, 10, 0, 0, 0, 0, 0, 0, 0, 0],
   "auth": "30639096bfe4ec4b9f17696ef1d02b9a",
}
并输出如下字符串:

{
   "admins": [148],
   "auth": "30639096bfe4ec4b9f17696ef1d02b9a",
}
或者最终,如果全部为零:

{
   "admins": [],
   "auth": "30639096bfe4ec4b9f17696ef1d02b9a",
}
目前我的模式是:

(?<=admins":[[:space:]]\[)(.*(,[[:space:]]0))(?=\])

(?因为您使用的是带有.NET正则表达式引擎的正则表达式,所以可以利用它的无限长查找模式功能

(?<="admins":\s*\[[^][]*?)(?:(?<=\[)0(?:,\s*0\b)*,?|\s*,\s*0\b\s*)

(?它不是json吗?那么,它是一个.NET正则表达式引擎吗?如果是的话,为什么要使用不完全支持它的正则表达式101呢?试试
(@WiktorStribiżew您在
…10,0,5,…
的情况下丢失逗号,然后
(?很好的答案和解释你能解释一下
[^][*?
部分吗?我真的不明白。@JohnyL
[^]
是一个,它匹配任何不是类中定义的字符的字符。由于
]
[
位于求反字符类内,
[^][
匹配的字符不是
[
]
*?
是一个惰性量词,它使它修改的模式匹配0个或更多的字符,尽可能少。@WiktorStribiżew不,我知道。我的意思是你为什么使用它?它的目的是什么?@JohnyL确保我们匹配方括号中的所有0数字。