当前位置:首页 » 编程语言 » java字符串匹配正则

java字符串匹配正则

发布时间: 2022-10-04 00:54:53

java 怎么利用正则表达式从给定的字符串中取出匹配规则字符串

java正则提取需要用到Matcher类,下面给出案例示例供参考

需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String s = "A876X";
// 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来
// 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”
Pattern pattern = Pattern.compile("(\\d)[^\\d]*$");
Matcher matcher = 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()返回匹配到的子字符串
示例代码如下,具体功能请参考注释

Pattern p=Pattern.compile(“\d+”);
Matcher m=p.matcher(“aaa2223bb”);
m.find();//匹配2223
m.start();//返回3
m.end();//返回7,返回的是2223后的索引号
m.group();//返回2223
Mathcer m2=p.matcher(“2223bb”);
m2.lookingAt(); //匹配2223
m2.start(); //返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0
m2.end(); //返回4
m2.group(); //返回2223
Matcher m3=p.matcher(“2223”); //如果Matcher m3=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()用于返回有多少组.
示例如下:

Pattern p=Pattern.compile(“([a-z]+)(\d+)”);
Matcher m=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时,才可以使用。

转载自
http://..com/link?url=k2Odn5gavn2rQjstEvvBR_-H-TyW0C3axT1IHrPZMvjM2ePqADrPf1_qw19fq

⑵ 我想在java代码中匹配字符串,用正则表达式,代码应该怎么写

1、java代码匹配汉字正则:[\u4E00-\u9FA5]+
2、java代码匹配汉字和字母正则[\u4E00-\u9FA5]+[a-zA-Z]+
3、js中只可以输入汉字:
function checkChinese(s)
{
var reg=/[\u4E00-\u9FA5]/g;
if (!reg.test(s)){alert("只允许输入汉字!");}
}

⑶ java正则匹配一个要求字符串

importjava.util.Arrays;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;

publicclassRegexDemo{

privatestaticPatternpattern;

publicstaticvoidmain(String[]args){
Stringsource="abc[javascript|JavaScript|前端用的一个语言|11|12|技术-公司]xyz";
Matchermatcher=getPattern().matcher(source);
if(matcher.find()){
System.out.println("名称="+matcher.group(1));
System.out.println("别名="+matcher.group(2));
System.out.println("简介="+matcher.group(3));
System.out.println("关键ID="+matcher.group(4));
System.out.println("同义ID="+matcher.group(5));
System.out.println("类别="+Arrays.toString(matcher.group(6).split("-")));
}
}

(){
if(pattern==null){
Stringstart="\[";
Stringword="([^\|]*)";
Stringsplit="\|";
Stringend="\]";
Stringregex=start+word+split+word+split+word+split+word+split
+word+split+"((技术|公司|产品|人物)(\-(技术|公司|产品|人物)){0,3})"+end;
pattern=Pattern.compile(regex);
}
returnpattern;
}
}

正好group1-6对应你要的数据。

⑷ java正则表达式 怎么匹配字符串

你要先写好正则表达式
单纯判断用String的matches()方法就可以了
public class Test {
public static void main(String[] args) {
String s = "1234";
s.matches("\\d*");//\\d*为正则表达式,数字出现零次或多次,返回boolean类型
}
}

⑸ java正则表达式是什么

java正则表达式是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。

很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是*和?。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。

和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。

正则表达式的基本操作:

正则表达式定义:符合一定规则的表达式。

作用:用于专门操作字符串。

特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。

好处:可以简化对字符串的复杂操作。

弊端:符号定义越多,正则越长,阅读性越差。

⑹ 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正则匹配字符串的值

这个很简单的:

Stringpatern=""code":"(\d+?)"";
Matchermatcher=Pattern.compile(patern).matcher(str);
while(matcher.find()){
System.out.println(matcher.group(1));
}

⑻ JAVA如何用正则表达式完成字符串的匹配

String str="111.111.222.1"; //你要匹配的字符串
String regex = "\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}";//正则表达式
if (str.matches(regex)) {//字符串 满足条件

}

⑼ Java中正则表达式 匹配字符串

String regEx = "<a>([\s\S]*?)</a>";
String s = "<a>123</a><a>456</a><a>789</a>";
Pattern pat = Pattern.compile(regEx);
Matcher mat = pat.matcher(s);
boolean rs = mat.find();
for(int i=1;i<=mat.groupCount();i++){
System.out.println(mat.group(i));
}

⑽ java 正则匹配修改字符串

在java里面,'\'被当作转义字符,'\r'、'\n'分别表示回车换行,'\t'是制表符,这些楼主应当知道吧。我不明白楼主为何要在哪里加\r\n,是想要输出换行,还是想就显示成\r\n。至于这里为什么会出现这种结果,我猜测可能是Pattern类匹配时是按行来的,具体是不是这样,楼主可以自己用eclipse工具查看一下compile的源码。我这里现在没有工具,所以不能替你查了。compile("(<span.*?>)(.*)(</span>)",Pattern.CASE_INSENSITIVE);我认为应当有一个类似Pattern.CASE_INSENSITIVE的公有静态参数可以控制不处理换行符的,楼主自己看看。

热点内容
安卓上哪里下大型游戏 发布:2024-12-23 15:10:58 浏览:186
明日之后目前适用于什么配置 发布:2024-12-23 14:56:09 浏览:51
php全角半角 发布:2024-12-23 14:55:17 浏览:826
手机上传助手 发布:2024-12-23 14:55:14 浏览:730
什么样的主机配置吃鸡开全效 发布:2024-12-23 14:55:13 浏览:828
安卓我的世界114版本有什么 发布:2024-12-23 14:42:17 浏览:708
vbox源码 发布:2024-12-23 14:41:32 浏览:275
诗经是怎么存储 发布:2024-12-23 14:41:29 浏览:657
屏蔽视频广告脚本 发布:2024-12-23 14:41:24 浏览:417
php解析pdf 发布:2024-12-23 14:40:01 浏览:816