正则表达式删除{}以外的所有内容 例如:
之前:
|loader|1|2|3|4|5|6|7|8|9|{"data" : "some data" }
后:
{"data" : "some data" }
使用@ Marcelo的正则表达式可行,但如果{}中有{}内的其他{}则不行:
"|loader|1|2|3|4|5|6|7|8|9|
{'data':
[
{'data':'some data'}
],
}"
答案 0 :(得分:0)
这似乎有效 - 你用的是哪种语言 - 显然是正则表达式......但是服务器方面 - 然后我可以把它放到你的声明中
{(.*)}
答案 1 :(得分:0)
你想这样做:
Regex.Replace("|loader|1|2|3|4|5|6|7|8|9|{\"data\" : \"some data\" }", ".*?({.*?}).*?", "$1");
(C#语法,正则表达式在大多数语言中应该没问题)
答案 2 :(得分:0)
你可以在Java中做这样的事情:
String[] tests = {
"{ in in in } out", // "{ in in in }"
"out { in in in }", // "{ in in in }"
" { in } ", // "{ in }"
"pre { in1 } between { in2 } post", // "{ in1 }{ in2 }"
};
for (String test : tests) {
System.out.println(test.replaceAll("(?<=^|\\})[^{]+", ""));
}
正则表达式是:
(?<=^|\})[^{]+
基本上我们匹配任何“外部”的字符串,定义为字符}
后面的字符串,或者从字符串^
的开头开始,直到达到文字{{1}我们匹配{
,我们用空字符串替换这些匹配的“外部”字符串。
[^{]+
是一个积极的背后隐藏(?<=...)
根据问题规范(不完全清楚),你也可以这样做:
{...}
这正是它所说的:给定一个任意字符串var s = "pre { { { } } } post";
s = s.substring(s.indexOf("{"), s.lastIndexOf("}") + 1);
,它的子字符串从第一个s
开始到最后一个{
(包括)。
答案 3 :(得分:0)
在javascript中你可以尝试
s = '|loader|1|2|3|4|5|6|7|8|9|{"data" : "some data" }';
s = s.replace(/[^{]*({[^}]*})/g,'$1');
alert(s);
当然,如果“某些数据”具有花括号,这将无效,因此解决方案在很大程度上取决于您的输入数据。
我希望这会对你有所帮助
Jerome Wagner
答案 4 :(得分:0)
对于那些搜索PHP的人来说,只有这个对我有用:
preg_replace("/.*({.*}).*/","$1",$input);