/**
* 例子写的不好,仅供参考
* 取taskid:与stat:之间的数字,例子中结果为:12345
* 取stat:与yj:之间的数字,例子中结果为:3
* 取yj:之后的所有字符 例子中结果为:同意,很好。
*/
public static void test(){
String str = "你好taskid:12345,,stat:3;yj:同意,很好。";
Pattern pattern = Pattern.compile("taskid:(.+?)stat:"); //标点怎么去掉
Matcher matcher = pattern.matcher(str);
if(matcher.find())
System.out.println(matcher.group(1));
}
正则java
public static void main(String[] args){
/**
* 例子写的不好,仅供参考
* 取taskid:与stat:之间的数字,例子中结果为:12345
* 取stat:与yj:之间的数字,例子中结果为:3
* 取yj:之后的所有字符 例子中结果为:同意,很好。
*/
String str = "你好taskid:12345,,stat:3;yj:同意,很好。";
Pattern pattern = Pattern.compile("taskid:(.+?)stat:"); //标点怎么去掉
Pattern pattern1 = Pattern.compile("taskid:(\\d+)[^s]+stat:");
Pattern pattern2 = Pattern.compile("stat:(\\d+)[^y]+yj:");
Pattern pattern3 = Pattern.compile("yj:(.+)");
Matcher matcher1 = pattern1.matcher(str);
Matcher matcher2 = pattern2.matcher(str);
Matcher matcher3 = pattern3.matcher(str);
if(matcher1.find())
System.out.println(matcher1.group(1));
if(matcher2.find())
System.out.println(matcher2.group(1));
if(matcher3.find())
System.out.println(matcher3.group(1));
}输出
12345
3
同意,很好。
Pattern pattern = Pattern
.compile("taskid:(\\d*).*stat:(\\d*).*yj:(.*)");
Matcher matcher = pattern.matcher(str);
if (matcher.find())
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
}
/**
* @author XXX
* @date Aug 30, 2013 10:13:34 AM<BR/>
* @param args
*/
public static void main(String[] args) {
String str = "你好taskid:12345,,stat:3;yj:同意,很好。";
Pattern pattern = Pattern.compile("(\\w+):(\\d+)|yj:(.*)", Pattern.DOTALL);
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
if(matcher.group(3) != null){
System.out.println("yj=" + matcher.group(3));
}else{
System.out.println(matcher.group(1) + "=" + matcher.group(2));
}
}
}
截取字符串这个很简单,但是楼主关于去掉符号说明的并不清楚,
我暂时的理解就是截取出来的字符串,
如果开头和结尾为符号则去掉,中间的符号则保留。对么?
如果那样的话
regex=".*?开始字段c([\\w|\u4E00-\u9FA5].*?[\\w|\u4E00-\u9FA5]).*?结束字段.*?";
[\\w|\u4E00-\u9FA5]//匹配所有英文字母和数字以及所有汉字包括繁体。
这样么?
如果差不多这样的回一下,我再精简下
该怎么规定短信的格式呢?
怎么根据上行短信取变量值呢
taskid,stat 都是Long型
yj是String型
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ public static void main(String[] args) {
String str = "你好taskid:12345,,stat:3;yj:同意,很好。";
Pattern pattern = Pattern.compile("taskid:(\\d+).+stat:(\\d+).+:(.+)");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
}
}