正则表达式来消除来自java中字符串的一些数据?
问题描述:
我有一个字符串数据,它有一些不需要的文本。我想用正则表达式从字符串中删除数据。示例数据在下面给出,我想从中删除密钥meth
及其相应的数据。我为此创建的正则表达式是"meth(S+)([\\},])"
,但它不起作用。正则表达式来消除来自java中字符串的一些数据?
我用下面的代码中使用正则表达式:
json = json.replaceAll("meth(S+)([\\},])","");
下面是字符串数据中存在的JSON:
{
data: [
{
"city": "barcelona",
"Date": "4 Apr 2014",
"Name": "A-B",
"meth": function(){
return_LANG=="en-us"?"A-T": "A-T "
},
"fo": "null",
},
{
"city": "Newyork",
"Date": "4 Apr 2014",
"Name": "B-C",
"meth": function(){
return_LANG=="en-us"?"S-E": "शक्तिपुंजएक्स."
},
"fo": "null",
}
]
}
我得到的结果是一样的字符串,因为我的正则表达式无法在字符串中找到匹配的数据。
请帮我纠正我的正则表达式。
答
这应该做的伎俩:
json = json.replaceAll("(?s)meth.*?\\},", "");
说明:
-
(?s)
是多行正则表达式。点.
然后也将匹配新的行字符(等于标志DOTALL
,见Pattern#DOTALL)。 -
.*?
搜索在非贪婪的方式任意字母,直到它找到},
答
试试这个
s = s.replaceAll("(?s)\"meth\":.*?},\\s+","");
+0
它给了我下面的异常:java.util.regex.PatternSyntaxException:在索引18附近的正则表达式模式中的语法错误:(?s)“meth”:. *?} \ S + – user818455
就应更换开始“甲基”的值:直到“},以‘’。 – user818455
不是有效的json检查http://jsonformatter.curiousconcept.com/ – aravindKrishna