简介

除非您以前使用过正则表达式,否则您可能不熟悉一些术语。但是,毫无疑问,您已经使用过不涉及脚本的某些正则表达式概念。
例如,您很可能使用 ?* 通配符来查找硬盘上的文件。? 通配符匹配文件名中的 0 个或 1 个字符,而 * 通配符匹配零个或多个字符。像 data(\w)?.dat 这样的模式将查找下列文件:
image.png

  • ^ 为匹配输入字符串的开始位置。
  • [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。
  • abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。

我们在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符 -,并设置用户名的长度,我们就可以使用以下正则表达式来设定。
image.png

例子

var str = “123abc”; var patt1 = /^[0-9]+abc$/;
document.write(str.match(patt1));
输入结果:123abc

java描述正则表达式实例

正则表达式 描述
this is text 匹配字符串 “this is text”
this\s+is\s+text 注意字符串中的 \s+。匹配单词 “this” 后面的 \s+ 可以匹配多个空格,
之后匹配 is 字符串,再之后 \s+ 匹配多个空格然后再跟上 text 字符串。
可以匹配这个实例:this is text
^\d+(\.\d+)? ^ 定义了以什么开始\d+ 匹配一个或多个数字 ? 设置括号内的选项是可选的
\. 匹配 “.”
可以匹配的实例:”5”, “1.5” 和 “2.21”。

Java 正则表达式和 Perl 的是最为相似的。
java.util.regex 包主要包括以下三个类:

  • Pattern 类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
  • Matcher 类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
  • PatternSyntaxException:PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

    捕获组

    获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
    例如,正则表达式 (dog) 创建了单一分组,组里包含”d”,”o”,和”g”。
    捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:

  • ((A)(B(C)))

  • (A)
  • (B(C))
  • (C)

可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。
还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。