正则表达式
发布日期:2021-05-08 20:22:01 浏览次数:15 分类:精选文章

本文共 2396 字,大约阅读时间需要 7 分钟。

文章目录

正则表达式是一种用于检测、匹配字符串的表达式,是一种描述规则,主流语言都有良好的支持。

字符匹配

表达式 描述
A 精确匹配字符A
A | B 选择匹配字符A或B
[abc] 字符集合,允许存在集合中任意一个
[0-9] 范围匹配,允许存在0-9的数字
[^0-9] 范围取反,不允许存在0-9的数字

元字符

表达式 描述
\d 匹配单个数字
\D 匹配非数字
\w 匹配单个字母
\W 匹配非字母
\s 匹配空格
\n 匹配换行符
. 匹配任意字符(除换行符)
\ | 匹配特殊字符

多次重复匹配

表达式 描述
[0-9]{1} 0-9只允许出现一次
[0-9]{1,} 0-9最少出现1次
[0-9]{1,3} 0-9最少出现1次最多出现3次
[0-9]* 0-9可以出现多次
[0-9]+ 0-9最少出现一次
[0-9]? 0-9最多出现一次

定位匹配

表达式 描述
^ab.* 匹配以ab开头的字符
.*ab$ 匹配以ab结尾的字符
^ab.*ba$ 匹配以ab开头ba结尾的字符

正则表达式模式

贪婪模式

贪婪模式是尽可能多的去匹配字符,例如字符串<a herf="www.baidu.com">百度</a><a herf="www.google.com">谷歌</a>,如果正则表达式为".*",返回的字符串为"www.baidu.com">百度</a><a herf="www.google.com"

非贪婪模式

非贪婪模式是尽可能少的去匹配字符,例如字符串<a herf="www.baidu.com">百度</a><a herf="www.google.com">谷歌</a>,如果正则表达式为".*?",在表示数量的地方加?即可表示使用的是非贪婪模式,如此返回的字符串为"www.baidu.com""www.google.com"

表达式分组

正则表达式可以使用()来为表达式分组,如此可以更有效的查询字符串。例如需要校验一个4位或6位的验证码,正则表达式为([0-9]{4})|([0-9]{6})

正则表达式在JS中的应用

在JS中使用/[0-9]{2}/来定义正则对象,并且通过Regex对象的test()方法判断是否符合正则表达式。

示例:

    
Regex
输入文本:

正则表达式在Java中的应用

示例:

package com.regex;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStreamReader;import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexTest {       public static void main(String[] args) {           StringBuffer stringBuffer = new StringBuffer();        try {               FileInputStream input = new FileInputStream("F:\\学习目录\\Regex\\web\\sample.html");            InputStreamReader reader = new InputStreamReader(input, "UTF-8");            BufferedReader bufferedReader = new BufferedReader(reader);            String str = "";            while ((str = bufferedReader.readLine()) != null) {                   stringBuffer.append(str + "\n");            }            System.out.println(stringBuffer);        } catch (Exception e) {               e.printStackTrace();        }        // 1.创建正则对象        Pattern pattern = Pattern.compile("
  • ([\\u4e00-\\u9fa5]{2,})([a-zA-Z]{2,})
  • "); // 2.正则表达式校验 Matcher matcher = pattern.matcher(stringBuffer); // 3.分组输出匹配结果 while (matcher.find()) { String ch = matcher.group(1); String en = matcher.group(2); System.out.println(ch + "-" + en); } }}
    国际主要城市

    国际主要城市

    • 纽约NewYork
    • 伦敦London
    • 东京Tokyo
    • 巴黎Paris
    • 香港HongKong
    上一篇:过滤器-Filter
    下一篇:Ajax

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年04月16日 13时18分59秒