我正试着编辑一些log4j通常覆盖的东西。为了做到这一点,我正试着改变一个正则表达式,以确保它捕捉到我需要的东西...一个例子...
"definition":{"schema":{"columns":[{"dataType":"INT","name":"column_a","description":"description1"},{"dataType":"INT","name":"column_b","description":"description2"}]}}}, "some other stuff": ["SOME_STUFF"], etc.
希望能捕捉到...
{"schema":{"columns":[{"dataType":"INT","name":"column_a","description":"*** REDACTED ***"},{"dataType":"INT","name":"column_b","description":"description"}]}}}
我有这个...
(?<=("definition":{))(\\.|[^\\])*?(?=}})
如果我一直在末尾添加一个},它会一直突出显示我需要的内容。问题是列表中没有设置嵌套元素的数量。
是否有任何调整以上,使我可以捕捉一切在外部括号?
2条答案
按热度按时间liwlm1x91#
如果在最后一个要匹配的方括号之后没有其他方括号,那么下面的正则表达式应该对你有用:
主要区别是将括号从环视表移动到匹配零件。
查看演示here。
yqkkidmi2#
如果你不能使用一个合适的JSON解析器,这个正则表达式应该可以为你工作:
RegEx Demo
细目:
(?<=\"definition\":)
:Lookbehind条件,用于确保在当前位置之前存在"definition":
.+?}
:匹配1+个以}
结尾的字符(?=,\h*\")
:LookaheadAssert在当前位置之前有一个逗号,然后是0个或更多个空格,后跟"