Java 中的正则表达式单字符预定义字符匹配问题(java正则任意字符串)新鲜出炉

随心笔谈12个月前发布 admin
95 0



目录一、需求二、单字符匹配(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

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

① :字符串的某个位置(某一个字符)满足 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
}
}

② :除了 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
}
}

③ :匹配单个英文字母

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
}
}

④ :和 一样(并集)

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
}
}

⑤ :交集

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
}
}

⑥ :取差集

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
}
}

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

.

】:任意单个字符

\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基于正则表达式实现查找匹配的文本功能【经典实例】

© 版权声明

相关文章