Java 中的正则表达式单字符预定义字符匹配问题

2023-12-07 0 360
目录
  • 一、需求
  • 二、单字符匹配(6个)
  • 三、预定义字符(7个)

一、需求

❓ 现有一个字符串,需满足如下要求:① [6, 18] 个字符② 只能包含字母、数字、下划线③ 需以字母开头❓ 如果字符串满足上述要求,返回 true,否则返回 false

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

🍀 正则表达式用极简的规则取代了复杂的验证逻辑🍀 Regex Expression🍀 正则表达式是一种通用的技术,适用于多种编程语言

二、单字符匹配(6个)

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

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

public class TestDemo {
public static void main(String[] args) {
String regex = \”[zgq]\”;
System.out.println(\”z\”.matches(regex)); // true
System.out.println(\”g\”.matches(regex)); // true
System.out.println(\”q\”.matches(regex)); // true
System.out.println(\”zgq\”.matches(regex)); // false
}
}
public class TestDemo {
public static void main(String[] args) {
String regex = \”26[abc]3q\”;
System.out.println(\”26a3q\”.matches(regex)); // true
System.out.println(\”26abc\”.matches(regex)); // false
System.out.println(\”26b3q\”.matches(regex)); // true
}
}

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

public class TestDemo {
public static void main(String[] args) {
String regex = \”[^cat]666\”;
System.out.println(\”c666\”.matches(regex)); // false
System.out.println(\”a666\”.matches(regex)); // false
System.out.println(\”t666\”.matches(regex)); // false
System.out.println(\”bb666\”.matches(regex)); // false
System.out.println(\”b666\”.matches(regex)); // true
}
}
public class TestDemo {
public static void main(String[] args) {
String regex1 = \”[12345]666\”;
String regex2 = \”[^1-5]666\”;
System.out.println(\”1666\”.matches(regex1)); // true
System.out.println(\”3666\”.matches(regex1)); // true
System.out.println(\”5666\”.matches(regex1)); // true
System.out.println(\”6666\”.matches(regex1)); // false

System.out.println(\”1666\”.matches(regex2)); // false
System.out.println(\”3666\”.matches(regex2)); // false
System.out.println(\”5666\”.matches(regex2)); // false

System.out.println(\”6666\”.matches(regex2)); // true
}
}

✏️ ③ [a-zA-z]:匹配单个英文字母

public class TestDemo {
public static void main(String[] args) {
String regex = \”[a-zA-Z]666\”;
System.out.println(\”6666\”.matches(regex)); // false
System.out.println(\”b666\”.matches(regex)); // true
}
}

✏️ ④ [a-d[1-6]]:和 [a-d1-6] 一样(并集)

public class TestDemo {
public static void main(String[] args) {
String regex1 = \”[a-d[1-6]]\”;
String regex2 = \”[a-d1-6]\”;
System.out.println(\”a\”.matches(regex1)); // true
System.out.println(\”e\”.matches(regex1)); // false
System.out.println(\”1\”.matches(regex1)); // true
System.out.println(\”7\”.matches(regex1)); // false

System.out.println(\”a\”.matches(regex2)); // true
System.out.println(\”e\”.matches(regex2)); // false
System.out.println(\”1\”.matches(regex2)); // true
System.out.println(\”7\”.matches(regex2)); // false
}
}

✏️ ⑤ [zgq&&[god]]:交集

public class TestDemo {
public static void main(String[] args) {
String regex1 = \”[zgq&&[god]]\”;
System.out.println(\”q\”.matches(regex1)); // false
System.out.println(\”d\”.matches(regex1)); // false
System.out.println(\”g\”.matches(regex1)); // true
}
}

✏️ ⑥ [zgq&&[god]]:取差集

public class TestDemo {
public static void main(String[] args) {
String regex1 = \”[zgq&&[^god]]\”;
System.out.println(\”q\”.matches(regex1)); // true
System.out.println(\”d\”.matches(regex1)); // false
System.out.println(\”g\”.matches(regex1)); // false
System.out.println(\”z\”.matches(regex1)); // true

// 取差集, 从字母 a 到字母 z 中去除字母 b 和 d
String regex2 = \”[a-z&&[^bd]]\”;
System.out.println(\”d\”.matches(regex2)); // false
System.out.println(\”a\”.matches(regex2)); // true
}
}

三、预定义字符(7个)

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

📝 【.】:任意单个字符📝 【\\d】:数字📝 【\\D】:非数字📝 【\\s】:空白📝 【\\S】:非空白📝 【\\w】:字母(英文字母、下划线、数字)📝 【\\W】:非英文字母

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

public class TestDemo {
public static void main(String[] args) {
String r1 = \”.\”;
System.out.println(\”@\”.matches(r1)); // true
System.out.println(\”庆\”.matches(r1)); // true
System.out.println(\”I\”.matches(r1)); // true
System.out.println(\” \”.matches(r1)); // true
System.out.println(\”.\”.matches(r1)); // true
}
}
public class TestDemo {
public static void main(String[] args) {
// 匹配 java 文件
String r1 = \”.\\\\.java\”;
System.out.println(\”a.java\”.matches(r1)); // true
System.out.println(\”xjava\”.matches(r1)); // false
System.out.println(\”5java\”.matches(r1)); // false
}
}
public class TestDemo {
public static void main(String[] args) {
String r1 = \”[abc]\”;
String r2 = \”\\\\[abc\\\\]\”;
System.out.println(\”a\”.matches(r1)); // true
System.out.println(\”c\”.matches(r1)); // true
System.out.println(\”[abc]\”.matches(r1)); // false

System.out.println(\”a\”.matches(r2)); // false
System.out.println(\”c\”.matches(r2)); // false
System.out.println(\”[abc]\”.matches(r2)); // true
}
}

到此这篇关于Java 中的正则表达式(单字符匹配和预定义字符)的文章就介绍到这了,更多相关java正则表达内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • Java正则表达式匹配字符串并提取中间值的方法实例
  • java如何用正则表达式匹配与提取字符串
  • Java正则表达式循环匹配字符串方式
  • 正则表达式匹配${key}并在Java中使用的详细方法
  • java正则表达式匹配所有数字的案例
  • Java使用正则表达式匹配获取链接地址的方法示例
  • Java基于正则表达式实现查找匹配的文本功能【经典实例】

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 正则表达式 Java 中的正则表达式单字符预定义字符匹配问题 https://www.u-9.cn/biancheng/zhengze/127586.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务