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

java字符的正则匹配

发布时间: 2022-05-18 21:59:12

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 正则表达式语法

⑵ 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();//返回2223Mathcer m2=p.matcher(“2223bb”); m2.lookingAt(); //匹配2223 m2.start(); //返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0 m2.end(); //返回4 m2.group(); //返回2223Matcher 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时,才可以使用。

⑶ 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正则提取需要用到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如何用正则表达式完成字符串的匹配

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正则表达式是什么

在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。

正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

(6)java字符的正则匹配扩展阅读:

正则表达式的特点是:

1、灵活性、逻辑性和功能性非常强;

2、可以迅速地用极简单的方式达到字符串的复杂控制。

3、对于刚接触的人来说,比较晦涩难懂。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到着名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

⑺ 请问JAVA中正则表达式匹配怎么实现的!

Java中正则表达式匹配的语法规则:

packageorg.luosijin.test;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;

/**
*正则表达式
*@versionV5.0
*@authorAdmin
*@date2015-7-25
*/
publicclassRegex{

/**
*@paramargs
*@authorAdmin
*@date2015-7-25
*/

publicstaticvoidmain(String[]args){
Patternpattern=Pattern.compile("b*g");
Matchermatcher=pattern.matcher("bbg");
System.out.println(matcher.matches());
System.out.println(pattern.matches("b*g","bbg"));
//验证邮政编码
System.out.println(pattern.matches("[0-9]{6}","200038"));
System.out.println(pattern.matches("//d{6}","200038"));
//验证电话号码
System.out.println(pattern.matches("[0-9]{3,4}//-?[0-9]+","02178989799"));
getDate("Nov10,2009");
charReplace();
//验证身份证:判断一个字符串是不是身份证号码,即是否是15或18位数字。
System.out.println(pattern.matches("^//d{15}|//d{18}$","123456789009876"));
getString("D:/dir1/test.txt");
getChinese("welcometochina,江西奉新,welcome,你!");
validateEmail("[email protected]");
}
/**
*日期提取:提取出月份来
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetDate(Stringstr){
StringregEx="([a-zA-Z]+)|//s+[0-9]{1,2},//s*[0-9]{4}";
Patternpattern=Pattern.compile(regEx);
Matchermatcher=pattern.matcher(str);
if(!matcher.find()){
System.out.println("日期格式错误!");
return;
}
System.out.println(matcher.group(1));//分组的索引值是从1开始的,所以取第一个分组的方法是m.group(1)而不是m.group(0)。
}
/**
*字符替换:本实例为将一个字符串中所有包含一个或多个连续的“a”的地方都替换成“A”。
*
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidcharReplace(){
Stringregex="a+";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher("okaaaaLetmeAseeaaaaabooa");
Strings=matcher.replaceAll("A");
System.out.println(s);
}
/**
*字符串提取
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetString(Stringstr){
Stringregex=".+/(.+)$";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(str);
if(!matcher.find()){
System.out.println("文件路径格式不正确!");
return;
}
System.out.println(matcher.group(1));
}
/**
*中文提取
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetChinese(Stringstr){
Stringregex="[//u4E00-//u9FFF]+";//[//u4E00-//u9FFF]为汉字
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(str);
StringBuffersb=newStringBuffer();
while(matcher.find()){
sb.append(matcher.group());
}
System.out.println(sb);
}
/**
*验证Email
*@paramemail
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidvalidateEmail(Stringemail){
Stringregex="[0-9a-zA-Z]+@[0-9a-zA-Z]+//.[0-9a-zA-Z]+";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(email);
if(matcher.matches()){
System.out.println("这是合法的Email");
}else{
System.out.println("这是非法的Email");
}
}
}

⑻ JAVA正则表达式怎么匹配所有符合要求的子字符串

正则有贪婪和非贪婪模式,所以你的最后集合只会有这两种的数据,不会出现如:zobo,boco。
代码片段:

Pattern pattern = Pattern.compile(".*?o");
Matcher matcher = pattern.matcher("zoboco");

while(matcher.find()){
String e=matcher.group(0);
System.out.println(e);
}

运行结果:

zo
bo
co
你可以通过这些结果按顺序排列组合出想要的组合数据如:zobo,boco,zoboco
关于java正则表达式的语法可以参考:java正则表达式语法详解及其使用代码实例
搜索"正则"的分享列表

⑼ java 正则表达式是什么

不同情况下的正则表达式:

  • 匹配首尾空格的正则表达式:(^s*)|(s*$)。

  • 匹配html标签的正则表达式:<(.*)>(.*)</(.*)>|<(.*)/>。

  • 配空行的正则表达式: [s| ]* 。

  • 整数或者小数:^[0-9]+.{0,1}[0-9]{0,2}$。

  • 只能输入数字:"^[0-9]*$"。

  • 只能输入n位的数字:"^d{n}$"。

  • 只能输入至少n位的数字:"^d{n,}$"。

  • 只能输入m~n位的数字:。"^d{m,n}$"

  • 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。

  • 只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。

  • 只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。

  • 只能输入非零的正整数:"^+?[1-9][0-9]*$"。

  • 只能输入非零的负整数:"^-[1-9][]0-9"*$。

  • 只能输入长度为3的字符:"^.{3}$"。

  • 只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。

  • 只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。

  • 只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。

  • 只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。

  • 只能输入由数字、26个英文字母或者下划线组成的字符串:"^w+$"。

  • 验证用户密码:"^[a-zA-Z]w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。

  • 验证是否含有^%&',;=?$"等字符:"[^%&',;=?$x22]+"。

  • 只能输入汉字:"^[u4e00-u9fa5]{0,}$"。

  • 验证Email地址:"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"。

  • 验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。

  • 验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。

  • 匹配中文字符的正则表达式: [u4e00-u9fa5]。

  • 匹配双字节字符(包括汉字在内):[^x00-xff]。

  • 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){returnthis.replace(/[^x00-xff]/g,"aa").length;}。

⑽ java 正则匹配字符是否为纯数字

java 正则匹配字符为纯数字方法:

定义正则表达式为:

Stringreg="^\d+$"

获取要判断的字符串:

Stringstr;//可以通过Scanner从控制台输入,也可以用字符串常量进行初始化

调用字符串的matches方法判断字符串为纯数字情况:

str.matches(reg);

如果是纯数字返回为true,否则返回为false;

热点内容
为什么苹果机比安卓机价格稳定 发布:2025-05-15 17:37:01 浏览:460
公司收信服务器地址 发布:2025-05-15 17:31:27 浏览:696
idle运行python文件 发布:2025-05-15 17:12:19 浏览:231
主存储器属于外存储器吗 发布:2025-05-15 16:54:00 浏览:755
显示屏看股票都有哪些配置 发布:2025-05-15 16:52:39 浏览:397
android行情 发布:2025-05-15 16:52:25 浏览:438
活动上线前服务器配置要注意什么 发布:2025-05-15 16:38:43 浏览:949
王者荣耀安卓区怎么免费转苹果 发布:2025-05-15 16:18:02 浏览:763
威朗pro高配都有哪些配置 发布:2025-05-15 15:57:09 浏览:958
数据库分页查询数据 发布:2025-05-15 15:45:13 浏览:522