面试系列 - 正则表达式详解

10道正则表达式面试八股文(答案、分析和深入提问)整理 示例URL:, ](https://www.bagujing.com/problem-exercise/29?pid=11483)要匹配合法的URL,可以使用以下正则表达式: 解释: - 行的开始。 - 匹配协议部分,可以是或,这个部分是可选的。 - 可选的前缀。 - 域名部分,必须包含至少一个字母或数字,后面跟着一个点和至少两个字母(如, 等)。 - 可选的路径部分,匹配一个斜杠后面跟零个或多个不空格的字符。 - 可选的查询字符串部分,匹配一个问号后面跟零个或多个不空格的字符。 - 行的结 阅读详情

目录

一、正则表达式

二、java 正则表达式详解 

正则表达式(Regular Expression),通常称为正则或Regex,是一个用于匹配文本模式的强大工具。正则表达式由一系列字符和特殊字符组成,用于定义搜索模式。它可以用于字符串匹配、搜索、替换和验证,是文本处理和模式匹配的常见工具。

一、正则表达式

一些常见的正则表达式元字符和用法:

  1. 普通字符: 正则表达式中的大多数字符(字母、数字、标点符号等)表示它们自己。例如,正则表达式abc匹配字符串中的字符"abc"。

  2. 点号 .: 表示匹配任意单个字符(除了换行符)。例如,正则表达式a.b匹配字符串中的"aab"、"acb"等。

  3. 字符类 [...]: 用于匹配字符类中的任何一个字符。例如,正则表达式[aeiou]匹配任何一个元音字母。

  4. 反义字符类 [^...]: 用于匹配不在字符类中的任何一个字符。例如,正则表达式[^0-9]匹配任何一个非数字字符。

  5. 重复限定符 {}: 用于指定重复次数。例如,正则表达式a{2}匹配两个连续的字母"a"。

  6. 星号 *: 表示匹配前面的字符零次或多次。例如,正则表达式ab*c匹配"ac"、"abc"、"abbc"等。

  7. 加号 +: 表示匹配前面的字符一次或多次。例如,正则表达式ab+c匹配"abc"、"abbc"等,但不匹配"ac"。

  8. 问号 ?: 表示匹配前面的字符零次或一次。例如,正则表达式colou?r匹配"color"和"colour"。

  9. 选择符 |: 用于分隔多个选择项,匹配其中任何一个。例如,正则表达式cat|dog匹配"cat"或"dog"。

  10. 转义字符 \: 用于转义特殊字符,使其匹配字面值。例如,正则表达式\.匹配实际的句点字符。

  11. 开始锚点 ^: 表示匹配字符串的开头。例如,正则表达式^abc匹配以"abc"开头的字符串。

  12. 结束锚点 $: 表示匹配字符串的结尾。例如,正则表达式xyz$匹配以"xyz"结尾的字符串。

  13. 分组 (): 用于将模式的一部分分组,以便进行重复、捕获或其他操作。例如,正则表达式(abc)+匹配"abc"、"abcabc"等。

  14. 捕获组 (): 用于捕获匹配的子字符串,以便后续引用或处理。例如,正则表达式(ab)c匹配"abc",并捕获"ab"。

  15. 非捕获组 (?:...): 用于分组但不捕获匹配的子字符串。例如,正则表达式(?:ab)+匹配"ab"、"abab"等,但不捕获。

  16. 前向匹配 (?=...): 用于查找满足条件的前缀。例如,正则表达式x(?=y)匹配字符串中的"x",但只有在后面跟着"y"时才匹配成功。

  17. 反向匹配 (?<=...): 用于查找满足条件的后缀。例如,正则表达式(?<=x)y匹配字符串中的"y",但只有在前面有"x"时才匹配成功。

正则表达式是一个强大的文本处理工具,可以用于字符串的高级操作和模式匹配。学习和掌握正则表达式需要一些时间和练习,但它对于处理文本数据和进行字符串操作是非常有价值的。

二、java 正则表达式详解 

正则表达式(Regular Expression,简称正则或Regex)是一种强大的文本匹配和搜索工具,Java也提供了对正则表达式的支持。Java使用java.util.regex包来处理正则表达式,你可以在Java中使用正则表达式来执行字符串匹配、搜索、替换等操作。

以下是一些常见的Java正则表达式操作和详解:

  1. 正则表达式的基本语法: 在Java中,正则表达式可以由普通字符和特殊字符组成,特殊字符通常用来表示模式。例如,abc是一个简单的正则表达式,用于匹配字符串中的字符"abc"。

  2. Pattern 类: java.util.regex.Pattern类用于表示正则表达式的编译版本。要创建一个Pattern对象,你需要使用Pattern.compile()方法,将正则表达式字符串作为参数传递。

    Pattern pattern = Pattern.compile("abc");
  3. Matcher 类: java.util.regex.Matcher类用于执行匹配操作。你可以使用Pattern.matcher()方法创建一个Matcher对象,然后使用它执行匹配操作。

    Matcher matcher = pattern.matcher("abcde");
    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  4. matches() 方法: matches()方法用于检查整个输入字符串是否与正则表达式匹配。它返回一个布尔值,表示是否匹配成功。

    boolean isMatch = matcher.matches();
    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  5. find() 方法: find()方法用于查找输入字符串中的下一个匹配子串。它返回一个布尔值,表示是否找到匹配。

    boolean found = matcher.find();
    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  6. group() 方法: group()方法用于获取匹配的子字符串。你可以使用group(0)获取整个匹配的字符串,使用group(1)、group(2)等获取捕获组中的子字符串。

    String matchedString = matcher.group();
    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  7. 捕获组: 使用圆括号 () 可以创建捕获组。捕获组允许你从匹配的字符串中提取子字符串。例如,正则表达式(\\d+)-(\\d+)可以用于匹配并捕获形如"123-456"的字符串,并分别提取两个数字。

  8. 预定义字符类: Java正则表达式支持预定义的字符类,如\d(数字)、\w(单词字符)、\s(空白字符)等。例如,\d{3}匹配三个连续的数字。

  9. 边界匹配符: ^ 表示字符串的开始,$ 表示字符串的结束。例如,^abc匹配以"abc"开头的字符串,abc$匹配以"abc"结尾的字符串。

  10. 量词: 量词用于指定重复次数,例如 * 表示零次或多次,+ 表示一次或多次,? 表示零次或一次,{n} 表示恰好重复 n 次,{n,} 表示至少重复 n 次,{n,m} 表示重复 n 到 m 次。

  11. 转义字符: 特殊字符如 .、*、+、(、) 等在正则表达式中有特殊意义,如果要匹配它们本身,需要使用反斜杠 \ 进行转义。

  12. 分支条件: 使用 | 来表示分支条件,例如 apple|banana 匹配"apple"或"banana"。

以下代码,演示了如何在Java中使用正则表达式进行字符串匹配: 

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String input = "abc123def456";
        String patternString = "\\d+"; // 匹配一个或多个数字

        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(input);

        while (matcher.find()) {
            String matched = matcher.group();
            System.out.println("匹配到: " + matched);
        }
    }
}

 以上示例演示了如何使用正则表达式来匹配字符串中的数字。正则表达式 \\d+ 匹配一个或多个数字,并使用 find() 方法在输入字符串中查找匹配。然后,使用 group() 方法获取匹配的子字符串。

Linux面试题之shell编程详解(二)                测试空间旗下大头针出品编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。程序实现及注释如下:#! /bin/bash#deluser.sh#考察while循环i=1while [ $i -le 50]do#查看账户是否存在:只需要在/etc/passwd文件查找就可以了。我是利用了一个管道符,再利用grep进行#查 阅读详情

相关推荐

2024最全前端面试系列(正则表达式)(如何写出像大神一样让人看不懂的代码)(1)

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取。

radcb55226的博客 808

2024最全前端面试系列(正则表达式)(如何写出像大神一样让人看不懂的代码)

前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取![外链图片转存中…(img-dPPfOvrR-1712078082180)]

2401_84094868的博客 497

Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之RegexFeaturizer

Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之RegexFeaturizer RegexFeaturizer 源码 增加基于正则表达式的消息特征 @DefaultV1Recipe.register( DefaultV1Recipe.ComponentType.MESSAGE_FEATURIZER, is_trainable=True ) class RegexFeaturizer(SparseFeaturizer, GraphComponent): """Adds messag

大模型与Agent智能体 845

java 与 android 常用正则表达式

1.由数字、26个英文字母或者下划线组成的字符串:       ^[0-9a-zA-Z_]{1,}$   2.非负整数(正整数 + 0 ):       ^/d+$   3. 正整数:       ^[0-9]*[1-9][0-9]*$   4.非正整数(负整数 + 0):       ^((-/d+)|(0+))$   5. 负整数 :       ^-[0-9]*[1-9][

Susan8888的专栏 1075

面试笔试常考之正则表达式和模式匹配

深入浅出的介绍正则表达式,一些IT公司,中兴华为的必考题目

SQLSTATE58030

在优化一条SQL的时候遇到了执行错误 gtlions =# select t1.telnumber,t2.ua,t2.url,t1.apply_name,t2.apply_name from tb1 t1 gtlions -# left outer join tb2 t2 on t1.sid = t2.ipsid gtlions-# where t1.sum_date=20141128 a

Gtlions Tracker 3660

【前端面试】正则表达式的使用/示例/基础篇

主要讲解正则表达式的基本使用(基础篇)

sweethhheart的博客 460

树莓派安装snowboy

1、树莓派换源 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113615915 2、更新pip3 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113616214 3、存取麦克风 我们使用PortAudio作为音频输入/输出的跨平台支持。我们还使用sox作为快速实用程序来检查麦克风设置是否正确。 sudo apt-get install python-pyaudio python

qq_43556844的博客 1923

面试题19-正则表达式匹配

题目: 请实现一个函数用来匹配包含.和*的正则表达式。模式中的字符.表示任意一个字符,而*表示它前面的字符可以出现任意次(含0次)。匹配是指字符串的所有字符匹配整个模式。例如,字符串“aaa”与模式“a.a”和“abaca”匹配,但与“aa.a”和“ab*a”均不匹配。 解题思路 我们先来分析下如何匹配一个字符,现在只考虑字符’.’,不考虑’*’: 如果字符串和模式串的当前字符相等,那么我们继续匹配它们的下一个字符;如果模式串中的字符是’.’,那么它可以匹配字符串中的任意字符,我们也可以继续匹配它们的下一个

weixin_42127177的博客 826

MATLAB基础应用精讲-【数模应用】游程检验(附MATLAB、R语言和python代码实现)

游程检验是一种非参数性统计假设的检验方法,它是游程总数检验和最大游程检验的总称,用于两个独立样本的比较和观测结果随机性的检验测试。​游程检验亦称“连贯检验”,是根据样本标志表现排列所形成的游程的多少进行判断的检验方法。[2]例1:设某样本n=12人的标志表现为男、女,有以下三种排列。(i) 男\男,女\女\女,男,女\女,男\男\男\男;(ii) 男\男\男\男\男\男\男,女\女\女\女\女;(iii) 男,女,男,女,男,女,男,女,男,女,男\男;连续出现男或女的区段称为游程。

qq_36130719的博客 608

Cesium+Vue3教程(003):基于Vue3的Cesium自定义地图和地图叠加

在 Cesium 中,是用于加载地表影像图层的核心接口。通过它,您可以将各种地图服务(如卫星影像、街道地图、自定义瓦片等)加载到 Cesium 的地球上。Cesium 提供了多个内置的。

WwLK123的博客 634

前端学习必备精选文章60篇:JS正则表达式、markdown语法、前端面试

在如今这个时间和知识都是碎片化的时代,C站根据C1-C4认证的成长路径,进行知识细化整理,形成系统化的知识图谱。 通过调研一线互联网大厂的招聘JD,小编对标C站能力认证要求,为大家整理了系列技术干货合集,助力小伙伴们顺利进大厂~ 一、JS正则表达式 【JS正则表达式完整版】 【JS常用正则表达式大全】 【JS正则表达式语法大全(非常详细)】 【JS 正则表达式】 【JS正则表达式】 【正则判断是否为0-9整数_JS 正则表达式】 【常用js正则表达式 Javascript正则表达.

优快云能力认证官方博客 892

提升YOLOv8性能:用Swin Transformer替换Backbone的详细实现与分析【YOLOv8】

YOLOv8作为目标检测领域的最新版本,在速度和精度之间取得了良好的平衡。然而,随着计算机视觉任务的复杂性不断增加,YOLOv8的标准主干网络(Backbone)在处理高分辨率图像或多尺度目标时,可能存在一定的局限性。为了进一步提升YOLOv8的性能,我们可以引入Swin Transformer替换其主干网络,以增强模型的全局感知能力和多尺度特征提取能力。本文将详细介绍如何在YOLOv8中用Swin Transformer替换原有的Backbone,提供代码示例,并深入探讨其中的原理和效果。

博客 1717

2024最全前端面试系列(正则表达式)(如何写出像大神一样让人看不懂的代码

元字符| 元字符 | 描述 || — | — || . | 句号匹配任意单个字符除了换行符 || [ ] | 字符种类。匹配方括号内的任意字符 || [^ ] | 否定的字符种类。匹配除了方括号里的任意字符 || * | 匹配>=0个重复的在*号之前的字符 || + | 匹配>=1个重复的+号前的字符 || 标记?之前的字符为可选 || {n,m} | 匹配num个大括号之前的字符或字符集 (n

asnmd1283的博客 466

32、生物信息学中的符号、缩写及相关概念解析

本文详细解析了生物信息学中常用的符号、缩写及相关概念,涵盖概率理论、函数表示、模型结构、图与集合、维度参数、神经网络、隐藏马尔可夫模型、双向架构、语法系统、系统发育树、微阵列分析以及核方法与支持向量机等多个领域。通过表格和mermaid流程图的形式,系统梳理了各类符号的定义与应用场景,并介绍了常见缩写的全称与意义。文章旨在帮助研究人员准确理解生物信息学中的基础术语,提升对基因表达分析、序列建模、机器学习等技术的理解与应用能力。

rrr55的博客 146

淘系商品的成长密码:历史与趋势透视

本文分析了淘系商品的发展历程,从早期的市场探索到如今的行业领先地位,深入探讨了技术创新、供应链优化、用户需求洞察等关键因素在淘系商品成功中的作用。通过对平台不断完善商品生态、提升购物体验和服务的过程分析,文章总结了淘系商品在竞争激烈的市场中如何通过创新应对挑战并推动电商行业的进步。未来,随着消费趋势变化和新兴模式的兴起,淘系商品将在更大范围内发挥其市场影响力。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

关于:Java基础,常用工具和基础面试【篇】(专题汇总)

本文整理了作者所有【Java基础】相关的文章,并做了轻量级分类

Java Punk 695

MCAL知识点(十):ERU驱动配置详解

ERS:外部请求单元ETL:中断逻辑单元OGU:输出逻辑单元MCU里面配置要使用的功能和选择输入的管脚,注意上述模块关注点讲述的ERU必须和边沿检测模块相关联。

梦想技术家 1223

2020最全前端面试系列(正则表达式)(如何写出像大神一样让人看不懂的代码)

2020最全前端面试系列(正则表达式)(如何写出像大神一样让人看不懂的代码) 元字符 简写字符集 零宽度断言(前后预查) 标志 贪婪匹配与惰性匹配 (Greedy vs lazy matching)

前端彭于晏的博客 8390

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

2020最全前端面试系列(数据结构篇)(大厂必考算法)

2020最全前端面试系列(数据结构篇)(大厂必考算法) 2020最全前端面试系列(数据结构篇) 常见排序算法 冒泡排序 快速排序 数组去重 ES6 Set去重 数组扁平化 递归 reduce toString 树的遍历 深度优先遍历 广度优先遍历 哈希(二数之和) URL获取参数 正则表达式

前端彭于晏的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

python正则表达式面试_【面试系列】之六:关于正则表达式

之六:关于正则表达式开篇我今天下午上班的时候接到了搜狐的面试通知,面试时间是后天也就是周三上午的十点半,然后周三下午的时候还有58的线上答题。所以啦,这几天要抓紧复习的速度,不能拖拖拉拉。今天完成正则表达式,明天就更新css3的知识这个时候各大公司的笔试面试都开始了,各位小伙伴一起加油吧!正则的知识很重要,一定要重视哦基本语法介绍首先如何实例化一个正则表达式对象// 使用字面量的方式var reg...

weixin_39830688的博客 85

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

程序员面试笔试通关宝典系列丛书(由清华大学出版社出版)

程序员面试笔试通关宝典系列丛书(由清华大学出版社出版),感谢大家的支持!!!

hacker707的博客 2万+

2024最全前端面试系列(正则表达式)(如何写出像大神一样让人看不懂的代码)(2)

元字符| 元字符 | 描述 || — | — || . | 句号匹配任意单个字符除了换行符 || [ ] | 字符种类。匹配方括号内的任意字符 || [^ ] | 否定的字符种类。匹配除了方括号里的任意字符 || * | 匹配>=0个重复的在*号之前的字符 || + | 匹配>=1个重复的+号前的字符 || 标记?之前的字符为可选 || {n,m} | 匹配num个大括号之前的字符或字符集 (n

2401_84092508的博客 802

前端面试手写题系列 IV

如果真的能记住或者自己能够写出来的话,正则真的是一把利剑,很多自己无法实现或者实现不全的判断函数,都只需要一个正则表达式就可以解决。意思其实很明显,传入一个参数 William,然后等五秒,然后执行 do,然后执行 execute。像这种正则表达式,一般我们感觉都是不会考察的,但是实际上就是考了。// 我们原来的写法就是 fn3(fn2(fn1(1)))// 但是这里我们可以用 compose 函数来实现。// compose 函数的实现。

https://github.com/QAQDFAFD 895
上一篇: SpringBatch作业存储和元数据(BatchConfigurer)详解
下一篇: 详细解析SpringBoot自动装配
境里婆娑
境里婆娑 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 1万+粉丝 300原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

境里婆娑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值