java正则表达式提取
⑴ java 正则表达式 提取数据
类似这种,就不要用什么正则表达式了。
直接String[] ss = str.split(",");
Map m= new HashMap();
for(String s:ss){
String [] ts = s.split(":");
m.put(ts[0],ts[1]);
}
然后你想用name属性,就直接m.get("name");就取到了
⑵ java 怎么利用正则表达式从给定的字符串中取出匹配规则字符串
利用正则表达式从给定的字符串中取出符合匹配规则的字符串的Java程序如下:
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassE{
publicstaticvoidmain(String[]args){
Patternp=Pattern.compile("[A-Za-z]+");//设定匹配规则为取出字符串中的字母
Matcherm=p.matcher("12sifiwq820aufu");//与字符串匹配
while(m.find()){
System.out.println(m.group());
}
}
}
运行结果:
sifiwq
aufu
⑶ java正则表达式截取字符串
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassHello{
publicstaticvoidmain(String[]args){
Stringre="\[([^\]]+)\]";
Stringstr="[您好],abcdefg,[abc]";
Patternp=Pattern.compile(re);
Matcherm=p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
}
}
}
将m.group(1)组建成你自己想要的格式就好了
⑷ java 怎么利用正则表达式从给定的字符串中取出匹配规则字符串
java正则提取需要用到Matcher类,下面给出案例示例供参考
需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassTest{
publicstaticvoidmain(String[]args){
Strings="A876X";
//把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来
//在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”
Patternpattern=Pattern.compile("(\d)[^\d]*$");
Matchermatcher=pattern.matcher(s);
if(matcher.find())
System.out.println(matcher.group(1));
}
}
关于Matcher 中的几个方法说明:
Mathcer.start()
Matcher.end()
Matcher.group()
当使用matches(),lookingAt(),find()执行匹配操作后,就可以利用以上三个方法得到更详细的信息.
start()返回匹配到的子字符串在字符串中的索引位置.
end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
group()返回匹配到的子字符串
示例代码如下,具体功能请参考注释
Patternp=Pattern.compile(“d+”);
Matcherm=p.matcher(“aaa2223bb”);
m.find();//匹配2223
m.start();//返回3
m.end();//返回7,返回的是2223后的索引号
m.group();//返回2223
Mathcerm2=p.matcher(“2223bb”);
m2.lookingAt();//匹配2223
m2.start();//返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0
m2.end();//返回4
m2.group();//返回2223
Matcherm3=p.matcher(“2223”);//如果Matcherm3=p.matcher(“2223bb”);那么下面的方法出错,因为不匹配返回false
m3.matches();//匹配整个字符串
m3.start();//返回0
m3.end();//返回3,原因相信大家也清楚了,因为matches()需要匹配所有字符串
m3.group();//返回2223
另外,Mathcer类中start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作,Mathcer类还有一个groupCount()用于返回有多少组.
示例如下:
Patternp=Pattern.compile(“([a-z]+)(d+)”);
Matcherm=p.matcher(“aaa2223bb”);
m.find();//匹配aaa2223
m.groupCount();//返回2,因为有2组
m.start(1);//返回0返回第一组匹配到的子字符串在字符串中的索引号
m.start(2);//返回3
m.end(1);//返回3返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置.
m.end(2);//返回7
m.group(1);//返回aaa,返回第一组匹配到的子字符串
m.group(2);//返回2223,返回第二组匹配到的子字符串
注意: 只有当匹配操作成功,才可以使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException,也就是当matches(),lookingAt(),find()其中任意一个方法返回true时,才可以使用。
⑸ java正则表达式如何获取字符串中所有匹配内容
java正则表达式提取需要用到Matcher类。
⑹ java正则表达式如何获取字符串中所有匹配内容
一、正则表达式基础知识
1.1 句点符号
在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。另外,假设有一本英文字典,可以用正则表达式搜索全部内容。要构造出这个正则表达式,可以使用一个通配符——句点符号“.”。这样,完整的表达式就是“t.n”,匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:
1.3 “或”符号
如果除了上面匹配的所有单词之外,还想要匹配“toon”,那么,可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。圆括号还可以用来分组。
1.4 表示匹配次数的符号
下表显示了正则表达式的语法:
表 1.1 正则表达式语法