Java正则表达式元字符

正则表达式是一种强大的工具,它可以用来描述、匹配和操作字符串。Java提供了内置的正则表达式支持,通过使用正则表达式,我们可以实现字符串的搜索、替换、分割等操作。

在Java中,我们可以使用一些特殊的字符来构建正则表达式,这些特殊字符被称为“元字符”。元字符具有特殊的含义,用于描述要查找或匹配的模式。

1. 普通字符

在Java正则表达式中,所有不是元字符的字符都被视为普通字符。这些普通字符在模式中被字面匹配,即要匹配的字符串中必须包含相应的普通字符。

String regex = "hello";
String text = "hello world";
boolean isMatch = text.matches(regex); // true

在上面的示例中,我们使用普通字符“hello”构建了一个正则表达式,然后使用matches()方法来判断字符串是否匹配该正则表达式。

2. 元字符

Java正则表达式提供了多个元字符,每个元字符都有特殊的含义,用于描述模式中的不同部分。下面是一些常用的元字符及其含义:

  • .:匹配除换行符以外的任意字符。
  • []:匹配方括号内的任意字符。
  • [^]:匹配不在方括号内的任意字符。
  • -:定义字符范围。
  • \:转义字符,用于转义特殊字符。
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • *:匹配前面的元素零次或多次。
  • +:匹配前面的元素一次或多次。
  • ?:匹配前面的元素零次或一次。
  • {n}:匹配前面的元素恰好n次。
  • {n,}:匹配前面的元素至少n次。
  • {n,m}:匹配前面的元素至少n次至多m次。
  • ():定义分组。
  • |:匹配两个选择之一。

下面是一些示例代码,演示了如何使用这些元字符:

String regex = "h.llo"; // 匹配"h"后面跟着一个任意字符,然后是"llo"
String text = "hello";
boolean isMatch = text.matches(regex); // true

regex = "[aeiou]"; // 匹配任意一个元音字母
text = "hello";
isMatch = text.matches(regex); // true

regex = "[^aeiou]"; // 匹配任意一个非元音字母
text = "hello";
isMatch = text.matches(regex); // false

regex = "[a-z]"; // 匹配任意一个小写字母
text = "hello";
isMatch = text.matches(regex); // true

regex = "\\d"; // 匹配任意一个数字
text = "123";
isMatch = text.matches(regex); // true

regex = "\\^hello"; // 匹配以"^hello"开头的字符串
text = "^hello world";
isMatch = text.matches(regex); // true

regex = "world$"; // 匹配以"world"结尾的字符串
text = "hello world";
isMatch = text.matches(regex); // true

regex = "ab*"; // 匹配"a"后面跟着零个或多个"b"
text = "abb";
isMatch = text.matches(regex); // true

regex = "ab+"; // 匹配"a"后面跟着至少一个"b"
text = "a";
isMatch = text.matches(regex); // false

regex = "ab?"; // 匹配"a"后面跟着零个或一个"b"
text = "ab";
isMatch = text.matches(regex); // true

regex = "a{3}"; // 匹配"aaa"
text = "aaa";
isMatch = text.matches(regex); // true

regex = "a{2,}"; // 匹配至少两个连续的"a"
text = "aaa";
isMatch = text.matches(regex); // true

regex = "a{1,3}"; // 匹配至少一个、最多