当前位置:首页>开发>正文

正则匹配怎么同时匹配数字和字符串 java正则表达式如何获取字符串中所有匹配内容

2023-05-25 23:46:01 互联网 未知 开发

 正则匹配怎么同时匹配数字和字符串 java正则表达式如何获取字符串中所有匹配内容

正则匹配怎么同时匹配数字和字符串

表达式:^;.*作用是匹配“;”开头的整行,其中:^是匹配开头,;是匹配;.匹配任意字符(多行模式中除回车换行),.*表示任意字符出现任意多次如果需要半角的话,把表达式中的“;”换成“”即可

java正则表达式如何获取字符串中所有匹配内容?

java正则表达式提取需要用到Matcher类。
正则规则就是“一个数字加上大于等于0个非数字再加上结束符”
Pattern pattern 
= Pattern.compile("(\d)[^\d]*$")
Matcher matcher 
= pattern.matcher(s)
if(matcher.find()) 
System.out.println
(matcher.group(1)) } }

java 如何使用正则表达式显示匹配到的字符

import java.util.ArrayList
import java.util.List
import java.util.regex.Matcher
import java.util.regex.Pattern

public class Demo6 {
public static void main(String[] args) {
List match = match("serfwrf1231234dfsf2445")
System.out.println(match)
}

public static List match(String source) {
List result = new ArrayList()
String reg = "\d*[^\D*]"
Matcher m = Pattern.compile(reg).matcher(source)
while (m.find()) {
String r = m.group(0)
result.add(r)
}
return result
}
}

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

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

需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取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()//返回222Mathcer m2=p.matcher(“2223bb”)
m2.lookingAt() //匹配2223
m2.start() //返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0
m2.end() //返回4
m2.group() //返回222Matcher m3=p.matcher(“2223”) //如果Matcher m3=p.matcher(“2223bb”) 那么下面的方法出错,因为不匹配返回false
m3.matches() //匹配整个字符串
m3.start() //返回0
m3.end() //返回3,原因相信大家也清楚了,因为matches()需要匹配所有字符串
m3.group() //返回222
另外,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时,才可以使用。

最新文章