详细介绍Java正则表达式之单字符匹配和预定义字符

 3300

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于单字符匹配和预定义字符的相关内容,下面一起来看一下,希望对大家有帮助。


详细介绍Java正则表达式之单字符匹配和预定义字符


一、需求

现有一个字符串,需满足如下要求:

[6, 18] 个字符

只能包含字母、数字、下划线

需以字母开头

如果字符串满足上述要求,返回 true,否则返回 false

  1. public static boolean validString(String s) {
  2.     return s.matches("[a-zA-Z][a-zA-Z0-9_]{5,17}");
  3. }

正则表达式用极简的规则取代了复杂的验证逻辑

Regex Expression

正则表达式是一种通用的技术,适用于多种编程语言


二、单字符匹配(6个)

1. [abc]:字符串的某个位置(某一个字符)满足 a、b、c 中的一个

某个位置:该【单字符匹配】放的位置

  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String regex = "[zgq]";
  4.         System.out.println("z".matches(regex)); // true
  5.         System.out.println("g".matches(regex)); // true
  6.         System.out.println("q".matches(regex)); // true
  7.         System.out.println("zgq".matches(regex)); // false
  8.     }
  9. }
  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String regex = "26[abc]3q";
  4.         System.out.println("26a3q".matches(regex)); // true
  5.         System.out.println("26abc".matches(regex)); // false
  6.         System.out.println("26b3q".matches(regex)); // true 
  7.     }
  8. }


2. [^abc]:除了 a、b、c 之外的任意单个字符

  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String regex = "[^cat]666";
  4.         System.out.println("c666".matches(regex)); // false
  5.         System.out.println("a666".matches(regex)); // false
  6.         System.out.println("t666".matches(regex)); // false
  7.         System.out.println("bb666".matches(regex)); // false
  8.         System.out.println("b666".matches(regex)); // true
  9.     }
  10. }
  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String regex1 = "[12345]666";
  4.         String regex2 = "[^1-5]666";
  5.         System.out.println("1666".matches(regex1)); // true
  6.         System.out.println("3666".matches(regex1)); // true
  7.         System.out.println("5666".matches(regex1)); // true
  8.         System.out.println("6666".matches(regex1)); // false
  9.  
  10.         System.out.println("1666".matches(regex2)); // false
  11.         System.out.println("3666".matches(regex2)); // false
  12.         System.out.println("5666".matches(regex2)); // false
  13.  
  14.         System.out.println("6666".matches(regex2)); // true
  15.     }
  16. }


3. [a-zA-z]:匹配单个英文字母

  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String regex = "[a-zA-Z]666";
  4.         System.out.println("6666".matches(regex)); // false
  5.         System.out.println("b666".matches(regex)); // true
  6.     }
  7. }


4. [a-d[1-6]]:和 [a-d1-6] 一样(并集)

  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String regex1 = "[a-d[1-6]]";
  4.         String regex2 = "[a-d1-6]";
  5.         System.out.println("a".matches(regex1)); // true
  6.         System.out.println("e".matches(regex1)); // false
  7.         System.out.println("1".matches(regex1)); // true
  8.         System.out.println("7".matches(regex1)); // false
  9.  
  10.         System.out.println("a".matches(regex2)); // true
  11.         System.out.println("e".matches(regex2)); // false
  12.         System.out.println("1".matches(regex2)); // true
  13.         System.out.println("7".matches(regex2)); // false
  14.     }
  15. }


5. [zgq&&[god]]:交集

  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String regex1 = "[zgq&&[god]]";
  4.         System.out.println("q".matches(regex1)); // false
  5.         System.out.println("d".matches(regex1)); // false
  6.         System.out.println("g".matches(regex1)); // true
  7.     }
  8. }


6. [zgq&&[god]]:取差集

  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String regex1 = "[zgq&&[^god]]";
  4.         System.out.println("q".matches(regex1)); // true
  5.         System.out.println("d".matches(regex1)); // false
  6.         System.out.println("g".matches(regex1)); // false
  7.         System.out.println("z".matches(regex1)); // true
  8.  
  9.         // 取差集, 从字母 a 到字母 z 中去除字母 b 和 d
  10.         String regex2 = "[a-z&&[^bd]]";
  11.         System.out.println("d".matches(regex2)); // false
  12.         System.out.println("a".matches(regex2)); // true
  13.     }
  14. }


三、预定义字符(7个)

预定义字符匹配的仍然是单个字符

.】:任意单个字符

\d】:数字

\D】:非数字

\s】:空白

\S】:非空白

\w】:字母(英文字母、下划线、数字)

\W】:非英文字母

Java 中需以两个【\】开头表示预定义字符

  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String r1 = ".";
  4.         System.out.println("@".matches(r1)); // true
  5.         System.out.println("庆".matches(r1)); // true
  6.         System.out.println("I".matches(r1)); // true
  7.         System.out.println(" ".matches(r1)); // true
  8.         System.out.println(".".matches(r1)); // true
  9.     }
  10. }
  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         // 匹配 java 文件
  4.         String r1 = ".\\.java";
  5.         System.out.println("a.java".matches(r1)); // true
  6.         System.out.println("xjava".matches(r1)); // false
  7.         System.out.println("5java".matches(r1)); // false
  8.     }
  9. }
  1. public class TestDemo {
  2.     public static void main(String[] args) {
  3.         String r1 = "[abc]";
  4.         String r2 = "\\[abc\\]";
  5.         System.out.println("a".matches(r1)); // true
  6.         System.out.println("c".matches(r1)); // true
  7.         System.out.println("[abc]".matches(r1)); // false
  8.  
  9.         System.out.println("a".matches(r2)); // false
  10.         System.out.println("c".matches(r2)); // false
  11.         System.out.println("[abc]".matches(r2)); // true
  12.     }
  13. }


本文网址:https://www.zztuku.com/index.php/detail-13410.html
站长图库 - 详细介绍Java正则表达式之单字符匹配和预定义字符
申明:本文转载于《CSDN》,如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐