正则表达式来消除java中字符串中的一些数据?

正则表达式来消除java中字符串中的一些数据?,java,android,regex,Java,Android,Regex,我有一个字符串数据,其中包含一些不需要的文本。我想使用正则表达式从字符串中删除该数据。下面给出了示例数据,我想从中删除键meth及其相应的数据。我为此创建的正则表达式是“meth(S+([\\},])”,但它不起作用 我使用以下代码来使用此正则表达式: json = json.replaceAll("meth(S+)([\\},])",""); 下面是json中存在的字符串数据: { data: [ { "city": "barcelona", "Date"

我有一个字符串数据,其中包含一些不需要的文本。我想使用正则表达式从字符串中删除该数据。下面给出了示例数据,我想从中删除键
meth
及其相应的数据。我为此创建的正则表达式是
“meth(S+([\\},])”
,但它不起作用

我使用以下代码来使用此正则表达式:

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)
    用于多行正则表达式。点
    也将匹配新行字符(等于标志
    点所有
    ,请参阅)
  • *?
    以非贪婪的方式搜索任何字母,直到它找到
    },
试试这个

    s = s.replaceAll("(?s)\"meth\":.*?},\\s+","");

它应该将以“meth”:直到“}”开头的值替换为“.”。这不是一个有效的json检查,请给出以下异常:java.util.regex.PatternSyntaxException:索引18附近的regexp模式中的语法错误:(?s)“meth”:。*?}\s+