正则表达式来消除来自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",  
    } 
    ] 
} 

我得到的结果是一样的字符串,因为我的正则表达式无法在字符串中找到匹配的数据。

请帮我纠正我的正则表达式。

+0

就应更换开始“甲基”的值:直到“},以‘’。 – user818455

+0

不是有效的json检查http://jsonformatter.curiousconcept.com/ – aravindKrishna

这应该做的伎俩:

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