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数字。