如何使用序列开始并以}结尾的正则表达式

时间:2014-04-09 13:32:34

标签: android regex string replace

我试图从字符串中替换字符模式但是尽管付出了巨大的努力但仍无法实现。这是字符串:

{
trainNo: "12026",
startDate: "09 Apr 2014",
trainName: "SC-PUNE SHATABDI",
trnName:function(){return _LANG=="en-us"?"SC-PUNE SHATABDI":"सिकंदराबाद पुणे शताब्दी"},
trainSrc: "SC",
trainDstn: "PUNE",
runsOn: "NA",
schArr: "Source",
schDep: "14:45, 09 Apr",
schHalt: "Source",
actArr: "Source",
delayArr: "RIGHT TIME",
actDep: "14:45, 09 Apr",
delayDep: "RIGHT TIME",
actHalt: "Source",
trainType: "SHT"
} ,

我想替换这种模式:

trnName:function(){return _LANG=="en-us"?"SC-PUNE SHATABDI":"सिकंदराबाद पुणे शताब्दी"},

我尝试过这种模式,但无济于事:

data = data.replaceAll("\\{.*?\\}", "");

请帮帮我。谢谢。

2 个答案:

答案 0 :(得分:1)

搜索

\(trnName:function\(\)){.*}

并替换为

\1

答案 1 :(得分:1)

我认为这是你正在寻找的东西:

data = data.replaceAll("trnName:function\\(\\)\\{[^{}]*\\},\\s*", "");

它将匹配您想要匹配的所有字符串:

trnName:function(){return _LANG=="en-us"?"SC-PUNE SHATABDI":"सिकंदराबाद पुणे शताब्दी"},

...包括尾随逗号(,)和其后的换行符。


aelor's answer的问题在于它只是一个原始的正则表达式。您必须将其双重转义才能在Java字符串文字中使用。 (我也逃过了大括号,这在Android中可能没有必要,它的正则表达式与Java有点不同。)