软件构造String 的matches方法

查阅资料,得知matches方法有如下原型

(1)matches() 方法用于检测字符串是否匹配给定的正则表达式。

(2)调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:

调用方法:Pattern.matches(regex, str)

参数:public boolean matches(String regex)

(regex – 匹配字符串的正则表达式)。

返回值:在字符串匹配给定的正则表达式时,返回 true。

实例
public class Test {
public static void main(String args[]) {
String Str = new String(“www.yt.com”);

    System.out.print("返回值 :" );
    System.out.println(Str.matches("(.*)yt(.*)"));
    
    System.out.print("返回值 :" );
    System.out.println(Str.matches("(.*)google(.*)"));

    System.out.print("返回值 :" );
    System.out.println(Str.matches("www(.*)"));
}

}
以上程序执行结果为:

返回值 :true
返回值 :false
返回值 :true

要想深入了解matches方法,需要对正则表达式有较深理解

本学期我们学习了形式语言与自动机,正好可以结合相关知识进行分析

正则表达式,又称规则表达式,计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。
正则表达式的特点是:

  1. 灵活性、逻辑性和功能性非常强;
  2. 可以迅速地用极简单的方式达到字符串的复杂控制。
  3. 对于刚接触的人来说,比较晦涩难懂。

正则表达式语法规则相当复杂,以下是查阅到的资料
https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin#5

下面是我认为比较常用且比较重要的部分

一、能够与 ‘多种字符’ 匹配的表达式
正则表达式中的一些表示方法,可以匹配 ‘多种字符’ 其中的任意一个字符。比如,表达式 “\d” 可以匹配任意一个数字。虽然可以匹配其中任意字符,但是只能是一个,不是多个。

(1)\d 任意一个数字,0~9 中的任意一个
(2)\w 任意一个字母或数字或下划线,也就是 AZ,az,0~9,_ 中任意一个
(3)\s 包括空格、制表符、换页符等空白字符的其中任意一个
(4). 小数点可以匹配除了换行符(\n)以外的任意一个字符

二、自定义能够匹配 ‘多种字符’ 的表达式
使用方括号 [ ] 包含一系列字符,能够匹配其中任意一个字符。用 [^ ] 包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。

表达式 可匹配
[ab5@] 匹配 “a” 或 “b” 或 “5” 或 “@”
[^abc] 匹配 “a”,“b”,“c” 之外的任意一个字符
[f-k] 匹配 “f”~“k” 之间的任意一个字母
[^A-F0-3] 匹配 “A”“F”,“0”“3” 之外的任意一个字符

三、使用方法是:“次数修饰"放在"被修饰的表达式"后边。比如:”[bcd][bcd]" 可以写成 “[bcd]{2}”。

表达式 作用
{n} 表达式重复n次,比如:"\w{2}" 相当于 “\w\w”;“a{5}” 相当于 “aaaaa”
{m,n} 表达式至少重复m次,最多重复n次,如:"ba{1,3}"可以匹配 “ba"或"baa"或"baaa”

{m,} 表达式至少重复m次,比如:"\w\d{2,}“可以匹配 “a12”,”_456",“M12344”…

? 匹配表达式0次或者1次,相当于 {0,1},比如:"a[cd]?"可以匹配 “a”,“ac”,“ad”

  • 表达式至少出现1次,相当于 {1,},比如:"a+b"可以匹配 “ab”,“aab”,“aaab”…
  • 表达式不出现或出现任意次,相当于 {0,},比如:"^*b"可以匹配 “b”,"^^^b"…

关于正则表达式内容太多,要想正确使用matches方法,还得在平时编程中多积累,应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是定义的Student类以及自定义的LengthException和LetterException异常类的代码实现: ```java // LengthException 自定义异常类 class LengthException extends Exception { public LengthException(String message) { super(message); } } // LetterException 自定义异常类 class LetterException extends Exception { public LetterException(String message) { super(message); } } // Student 类 class Student { private String id; private String name; public Student(String id, String name) { this.id = id; this.name = name; } public String getId() { return id; } public void setId(String id) throws LengthException, LetterException { if (id.length() > 10) { throw new LengthException("id长度不能大于10!"); } if (id.matches(".*[a-zA-Z]+.*")) { throw new LetterException("id中不能含有字母字符!"); } this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } // ExceptionTest3 类 public class ExceptionTest3 { public static void main(String[] args) { Student stu = new Student("1234567890", "张三"); try { stu.setId("1234567890A"); // 抛出 LetterException 异常 //stu.setId("12345678901"); // 抛出 LengthException 异常 } catch (LengthException e) { e.printStackTrace(); } catch (LetterException e) { e.printStackTrace(); } } } ``` 在 main 方法中创建了一个 Student 对象,然后调用 setId 方法设置 id 属性,如果输入的 id 长度大于 10 或者含有字母字符,就会抛出对应的异常。在这里我们可以通过 try-catch 语句块来捕获这些异常,并进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值