java正则表达式

Java正则表达式
正则表达式定义了字符串的模式。

正则表达式可用于搜索、编辑或处理文本。

正则表达式并不局限于任何一种语言,但在每一种语言中都有细微的差异。

正则表达式的示例
字符串只是一个正则表达式,例如一个Hello World正则表达式匹配一个“Hello World”字符串。

. (点)也是一个正则表达式,可以匹配任何字符,如"a"或"1"。

正则表达式示例及说明如下:

正则表达式描述
这是文本

匹配字符串"this is text"

这个\ s + \ s +文本

注意字符串中的\s+。

单词"this"后面的\s+匹配多个空格,然后是is字符串,然后\s+匹配多个空格,然后是文本字符串。

匹配这个实例:这是文本

^ \ d + (\ \ d +) ?

这个定义是以什么开始的

\d+匹配一个或多个数字

? 集合括号中的选项是可选的

匹配\。“。”

匹配示例:“5”,“1.5”和“2.21”。

Java正则表达式与Perl正则表达式最相似。

regex包包含三个主要类:

模式类:
Pattern对象是正则表达式的编译表示。Pattern类没有公共构造函数。要创建Pattern对象,必须首先调用它的公共静态编译方法,该方法返回一个Pattern对象。此方法将正则表达式作为其第一个参数。

匹配器类:
Matcher对象是解释和匹配输入字符串的引擎。与Pattern类一样,Matcher没有公共构造函数。您需要调用Pattern对象上的匹配器方法来获得匹配器。

PatternSyntaxException:
PatternSyntaxException是一个非强制异常类,表示正则表达式模式中的语法错误。

下面以正则表达式为例。*查找字符串是否包含runnoob子字符串:

实例
进口java.util.regex。*;

类RegexExample1 {
public static void main(String[] args){
字符串内容=“我是新手”+
“从runoob.com。”;

String pattern = “.* runnoob .*”;

boolean isMatch = Pattern。匹配(模式、内容);
system . out。println("字符串是否包含子字符串’ runob '? "“+ isMatch);


示例的输出结果为:

字符串是否包含子字符串’ runob '?真正的
捕获组
捕获组是一种将多个字符视为单个单元的方法,它是通过将字符分组在括号内创建的。

例如,正则表达式(dog)创建一个包含“d”、“o”和“g”的组。

通过从左到右计算开括号来对捕获组进行编号。例如,在表达式((A) (B ©)中,有四个这样的组:

((A) (B ©))
(一)
(B ©)
©
通过调用Matcher对象上的groupCount方法,可以看到表达式有多少组。groupCount方法返回一个int值,该值指示Matcher对象当前具有多个捕获组。

还有一个特殊的组(group(0)),它总是表示整个表达式。该组不包括在GroupCount返回值中。

实例
下面的例子展示了如何从给定的字符串中查找一个数字字符串:

RegexMatches.java文件的代码:
进口java.util.regex.Matcher;
进口java.util.regex.Pattern;

公开课RegexMatches

public static void main(String[] args){

//以指定模式搜索字符串
String line = "此订单为QT3000! "好吗?”;
String pattern = “(\D*)(\ D +)(.*)”;

//创建Pattern对象
Pattern r = Pattern.compile(Pattern);

//现在创建Matcher对象
Matcher m = r.matcher(line);
If (m.find()) {
system . out。println(“找到的值:” + m.group(0));
system . out。println(“找到的值:” + m.group(1));
system . out。println(“找到的值:” + m.group(2));
system . out。println(“找到的值:” + m.group(3));
其他}{
system . out。println(“不匹配”);



上述示例的编译和运行结果如下:

发现值:此订单为QT3000!好吗?
发现值:此订单已为QT下
发现值:3000
发现价值:!好吗?
正则表达式语法
在其他语言中,\意味着:我想插入一个普通(字面)反斜杠到正则表达式,请不要给它任何特殊的含义。

在Java中,\的意思是:我想插入一个正则表达式的反斜杠,所以它后面的字符有特殊的含义。

因此,虽然在其他语言(如Perl)中,一个反斜杠\就足以转义,但在Java中,为在其他语言中转义解析正则表达式,需要两个反斜杠。在Java正则表达式中,两个\表示其他语言中的一个\,这也很容易理解,这就是为什么数字的正则表达式是\d,而普通反斜杠是\。

System.out.print(“\ \”);//输出为
System.out.print(“\ \ \ \”);//输出为\

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值