这是我的输入文字:
Calendar cal = Calendar.getInstance();
Date now = new Date();
cal.setTime(now);
long endTime = cal.getTimeInMillis();
cal.add(Calendar.HOUR_OF_DAY, -1);
long startTime = cal.getTimeInMillis();
// Create a data source
DataSource dataSource = new DataSource.Builder()
.setAppPackageName(context)
.setDataType(DataType.TYPE_CALORIES_EXPENDED)
.setStreamName(TAG + " - Calorie")
.setType(DataSource.TYPE_RAW)
.build();
// Create a data set
int CalDelta = 50;
DataSet dataSet = DataSet.create(dataSource);
// For each data point, specify a start time, end time, and the data value -- in this case,
// the number of new steps.
DataPoint dataPoint = dataSet.createDataPoint()
.setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS);
dataPoint.getValue(Field.FIELD_CALORIES).setFloat(CalDelta);
dataSet.add(dataPoint);
我正在尝试删除[QUOTE] [/ QUOTE]标记和标记本身内的所有内容。
我希望输出为:
[QUOTE=SynapseBreak;104047835]Armchio de dragon is satki dragon lai de leh
[URL="https://play.google.com/store/apps/details?id=com.shiportal.hwzreader&referrer=utm_source%3Dsignature%26utm_medium%3Dforum"]Sent from 權志-龍 using GAGT[/URL][/QUOTE]
why satki ? tell me :s13:
[QUOTE=articated;104047854]I not sad lah
U happy i happy kym
Just for fun loh :s12:
[ms]自從我變成了狗屎,就再也沒有人敢踩在我頭上了 HardwareZone Forums app[/ms][/QUOTE]
today arti jin sweet make me happy :s12:
[QUOTE=Iandao;104047967]Gg mbs now...[/QUOTE]
go there jiak simi ??
我尝试的代码是:
why satki ? tell me :s13: today arti jin sweet make me happy :s12: go there jiak simi ??
答案 0 :(得分:2)
请注意,仅当输入不包含嵌套的[QUOTE]
tages 时,才可以对模式使用以下修复。
正则表达式中的.
与换行符不匹配,.*
过于贪婪,即匹配字符串中一行/上的[/QUOTE]
的最后一次出现。
使用与Pattern.DOTALL
内联修饰符(嵌入标记选项)(?s)
的延迟点匹配,这将强制.
匹配任何字符:
"(?s)\\[QUOTE=.*?\\[/QUOTE\\]"
^^^^ ^^^
请参阅this regex demo。
或者,展开延迟点(以使模式更快地找到匹配项):
"\\[QUOTE=[^\\[]*(?:\\[(?!/QUOTE\\])[^\\[]*)*\\[/QUOTE\\]"
请参阅this regex demo。
String pat = "\\[QUOTE=[^\\[]*(?:\\[(?!/QUOTE])[^\\[]*)*\\[/QUOTE]";
String str = "[QUOTE=SynapseBreak;104047835]Armchio de dragon is satki dragon lai de leh\n\n[URL=\"https://play.google.com/store/apps/details?id=com.shiportal.hwzreader&referrer=utm_source%3Dsignature%26utm_medium%3Dforum\"]Sent from 權志-龍 using GAGT[/URL][/QUOTE]\nwhy satki ? tell me :s13:\n[QUOTE=articated;104047854]I not sad lah\nU happy i happy kym\n\nJust for fun loh :s12:\n[ms]自從我變成了狗屎,就再也沒有人敢踩在我頭上了 HardwareZone Forums app[/ms][/QUOTE]\ntoday arti jin sweet make me happy :s12:\n\n[QUOTE=Iandao;104047967]Gg mbs now...[/QUOTE]\ngo there jiak simi ??'";
String res = str.replaceAll(pat, "");
System.out.println(res);
// => why satki ? tell me :s13:
//
// today arti jin sweet make me happy :s12:
//
//
// go there jiak simi ??'
答案 1 :(得分:1)
你的正则表达式没有考虑新的线条。这是通过在开头添加(?s)来完成的。
string.replaceAll("(?s)\\[QUOTE.*?\\[/QUOTE\\]", "");
答案 2 :(得分:1)
(?s)\\[QUOTE.*?\\[/QUOTE\\]
尝试以上RegEx。它会起作用。