java中的正则表达式:验证、切分

it2023-10-06  71

判断一个字符串是否符和规定格式,就要用的正则匹配。

文章目录

1 验证格式String类的matches() 函数Patern类的matches函数 2 切分出一段符合格式的字符串 Pattern和Matcher类2 正则表达是的最最常用的几个知识点

1 验证格式

String类的matches() 函数

第一种是简单的String类的matches() 函数

@Test void testStringMatch() { // String 的正则表达式只能判断 String info = "我的手机号是:137-9172-3627"; String pattern = "(.+)\\d{3}-\\d{4}-\\d{4}"; assertTrue(info.matches(pattern)); }

Patern类的matches函数

@Test void testPaternVerrify() { String pattern = "int\\s(\\w[\\w\\d_]*)\\s*=\\s*new\\s*int\\s*;"; String str = "int myname = new int ;"; assertTrue(Pattern.matches(pattern, str)); String str2 = "int m1m3m_n = new int ;"; assertTrue(Pattern.matches(pattern, str2)); }

2 切分出一段符合格式的字符串 Pattern和Matcher类

@Test void testPaternSearchSubString() { // 从一个字符串中取出电话号码的一段 Pattern pattern = Pattern.compile("\\d{3}-\\d{4}-\\d{4}"); String info = "我的手机号是:137-9172-3627"; Matcher matcher = pattern.matcher(info); if (matcher.find()) { String substring = info.substring(matcher.start(), matcher.end()); print(substring); } // 从一段日期中取出生日的日期 Pattern birthdayPattern = Pattern.compile("\\d{4}[-:/ ]\\d{1,2}[-:/ ]\\d{1,2}"); //yyyy-MM-dd String data = "my birthday is 1995-09-13, your is 1994/2/3, he is 2001 1 21"; Matcher birthdayMatcher = birthdayPattern.matcher(data); while (birthdayMatcher.find()) { print(data.substring(birthdayMatcher.start(), birthdayMatcher.end())); } print(birthdayMatcher.replaceAll("yyyy-MM-dd")); }

2 正则表达是的最最常用的几个知识点

正在匹配常用概念很简单:

数字\d 字母字符\w 非字符\W 其他字符\S (例如标点符号、空格、换行)修饰前一个单元: 0次或者1次 ?号0次或者多次 *号1次或者多次 +号必须出现m次 {m}最少出现m次 {m,}最少m最多n次{m,n} 在多个中选择一个 多选其一 [ABC] 或者(A|B|C)范围选择 [a-zA-Z0-9]

关于长度的约束例子

@Test void testPaternRange() { String oneOrMorePattern="\\w+"; assertTrue(Pattern.matches(oneOrMorePattern, "s")); assertTrue(Pattern.matches(oneOrMorePattern, "abcd")); assertFalse(Pattern.matches(oneOrMorePattern, "")); String zeroOrOnePattern="(\\w)?"; assertTrue(Pattern.matches(zeroOrOnePattern, "a")); // assertTrue(Pattern.matches(zeroOrOnePattern, "")); assertFalse(Pattern.matches(zeroOrOnePattern, "ab")); String zeroOrMorePattern="\\w*"; assertTrue(Pattern.matches(zeroOrMorePattern, "")); assertTrue(Pattern.matches(zeroOrMorePattern, "abcdef")); String mOrMorePattern="\\w{3,}"; assertTrue(Pattern.matches(mOrMorePattern, "abc")); assertTrue(Pattern.matches(mOrMorePattern, "abcdefg")); assertFalse(Pattern.matches(mOrMorePattern, "ab")); String leastMlargestNPattern="\\w{2,4}"; assertTrue(Pattern.matches(leastMlargestNPattern, "ab")); assertTrue(Pattern.matches(leastMlargestNPattern, "abc")); assertTrue(Pattern.matches(leastMlargestNPattern, "abcd")); assertFalse(Pattern.matches(leastMlargestNPattern, "a")); }

范围多选一

@Test void testOptional(){ String oneOfAnArray="a[\\+\\-\\*/]b"; assertTrue(Pattern.matches(oneOfAnArray,"a/b")); assertTrue(Pattern.matches(oneOfAnArray,"a*b")); String a_Or_b ="a|A"; assertTrue(Pattern.matches(a_Or_b,"a")); assertTrue(Pattern.matches(a_Or_b,"A")); String azAZ ="[a-zA-Z0-9]"; assertTrue(Pattern.matches(azAZ,"a")); assertTrue(Pattern.matches(azAZ,"h")); assertTrue(Pattern.matches(azAZ,"j")); assertTrue(Pattern.matches(azAZ,"C")); assertTrue(Pattern.matches(azAZ,"2")); assertTrue(Pattern.matches(azAZ,"8")); }
最新回复(0)