用于模式匹配的 String 语法
前面讨论的都是如何创建正则表达式的语法,下面我们来讨论如何在代码中使用这些正则表达式。首先看下 String 对象的一些用以执行正则表达式匹配、检索和替换的方法。
String 支持四种使用正则表达式的方法,最简单的是 search()
,该方法接收一个正则表达式,并返回第一个与之匹配的子串的起始位置,如果找不到匹配的子串,则返回 -1:
主要注意的是该方法会忽略正则表达式参数中的g
,所以不支持全局检索。
replace()
方法用于执行检索和替换操作,第一个参数是一个用于检索的正则表达式,第二个参数是进行替换的字符串,如果正则表达式中设置了修饰符g
,那么原字符串中的所有匹配子串都将替换成第二个参数指定的字符串,如果没有设置修饰符g
,那么只替换匹配到的第一个子串:
注:如果传入的第一个参数不是正则表达式,而是字符串的话,就会搜索该字符串并执行替换操作。
此外,基于之前子表达式匹配分组的知识,我们还可以实现一些更复杂的功能,在替换字符串中使用$
加子表达式索引号,通过指定子表达式匹配文本来替换整个匹配内容,比如,我们可以通过中文引号替换文本中的英文引号:
match()
方法是最常用的 String 正则表达式方法,它唯一的参数就是一个正则表达式,返回的是一个由匹配结果组成的数组,如果正则表达式使用了修饰符g
,就会返回所有匹配结果,否则只返回第一个匹配结果:
下面我们看一个稍微复杂点的,用于解析 URL 的例子:
String 对象的最后一个和正则表达式相关的方法是 split()
,这个方法用于将调用它的字符串拆分成一个子串组成的数组,使用的分隔符是传入 split()
的参数,这个参数可以是字符串,也可以是正则表达式:
No Comments