百日筑基篇——正则表达式(linux入门五)

本文介绍了正则表达式的基础知识,包括字符匹配、边界匹配、限定符、特殊字符和分组等概念,并通过实例展示了在Bash脚本中如何运用正则表达式进行字符串匹配和判断,如判断用户名称是否以w开头和测试输入是否全为数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

百日筑基篇——正则表达式(linux入门五)


前言

正则表达式是一种强大且灵活的工具,在很多编程语言中都有内置的正则表达式支持。不同的编程语言对正则表达式的语法和用法可能有所不同,但基本的正则表达式语法和规则是通用的。今天就简单介绍一下在Linux脚本Bash语言中正则表达式的应用。

一、正则表达式简介

它是一种描述字符模式的工具,可以用来进行字符串的匹配和查找、替换等操作。使用正则表达式可以对字符串进行高级的模式匹配,并可以按照一定的规则进行查找、替换和数据提取等操作。

以下是一些常用的正则表达式语法:

1. 字符匹配:

使用方括号 [] 匹配指定范围内的任意一个字符,
例如,[a-z] 可以匹配 ‘a’ 到 ‘z’ 范围内的任意小写字母字符。

2. 边界匹配:

^ :匹配输入字符串的开始位置,
当在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。
要匹配 ^ 字符本身,使用 \ ^。

$:匹配输入字符串的结束位置,要匹配 $ 字符本身,请使用 \ $

3. 限定符:

 *  : 匹配前面的子表达式零次或多次。
 
 +  : 匹配前面的子表达式一次或多次。
 
 ?  :  匹配前面的子表达式零次或一次,或指明一个非贪婪限定符
 
{n,m}: 匹配前面的字符或子表达式至少 n 次,但不超过 m 次

4. 常用的特殊字符:

’ \ ‘ : 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
例如, ‘n’ 匹配字符 ‘n’。‘\n’ 匹配换行符。序列 ‘\’ 匹配 “”,而 ‘(’ 则匹配 “(”

‘\d’:匹配一个数字字符,相当于 [0-9]。
‘\D’:匹配一个非数字字符,相当于 [^0-9]。

‘\w’:匹配一个单词字符,包括字母、数字和下划线,相当于 [a-zA-Z0-9_]。
‘\W’:匹配一个非单词字符,相当于 [^a-zA-Z0-9_]。

‘\s’:匹配一个空白字符,包括空格、制表符、换行符等。
‘\S’:匹配一个非空白字符。

‘.’:匹配除换行符以外的任意字符。

5. 分组和引用:

使用圆括号 () 进行分组,可以将多个字符或子表达式组合为一个整体,并对整体应用量词。

使用 ‘\数字’ 来引用前面的分组。例如,
‘(abc)\1’ 可以匹配 “abcabc”。
(abc)(aa)\2 可用于匹配以 “abc” 开头、中间是 “aa”、且结尾也是 “aa” 的字符串

二、例子:

# 匹配以字母开头,数字结尾
^[A-Za-z][0-9]$

#匹配以非字母开头,数字结尾
^[^A-Za-z][0-9]$

#匹配除了双引号(")和单引号(')以及(^)之外的所有字符
^[^\"\'\^]

#匹配以 "w" 开头且长度为 1 到 3 个字符的字符串
^w{1,3}$   

#有无$结尾的区别
^h{2,}   #如:hhefd和hhhsd,但host不行
^h{2,}$	# hhhsd不行,要求字符"h"必须一直出现到字符串的结尾才算匹配

#匹配所有的正整数
^[1-9][0-9]{0,}$

#所有的整数
^\-{0,1}[0-9]{1,}$     

#所有的浮点数
^[-]?[0-9]+\.?[0-9]+$ 

#"[-]?" 是用于匹配可选的减号,表示负数。减号"-"被放在方括号内表示可选,即可以出现零次或一次。
#"[0-9]+" 是用来匹配一个或多个数字字符,表示整数部分。
#".?" 是用来匹配可选的小数点。小数点"."被放在方括号内表示可选,即可以出现零次或一次。
#"[0-9]+" 是用来匹配一个或多个数字字符,表示小数部分
#+号表示匹配前面的表达式一次或多次



三、应用:

bash语言中的正则比对,使用[[]]

1. 判断用户是否w开头

[[ "$USER" =~ ^w ]];echo $?

“$USER” 是用来获取环境变量USER的值。
“=~” 是用来进行正则表达式匹配的操作符。
“^w” 是正则表达式,表示以字母"w"开头。
$? 是一个特殊变量,用于获取上一个命令的退出状态码,0为真,1为假

2. 测试输入是否全是数字

#!/usr/bin/bash
read -p "输入一个值:" num
if [[ "$num" =~ ^[0-9]+$ ]];then
	echo "你输入的全为数字"
else
	echo "错误,你输入的不全是数字"
fi

总结

正则表达式在许多编程语言中都广泛应用,基本的正则表达式语法和规则是通用的。本文主要介绍的是在Linux系统的脚本语言中的应用。介绍了许多常用的正则表达式的语法。
谈笑有鸿儒,往来无白丁

–2023-7-23 筑基篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星石传说

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

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

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

打赏作者

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

抵扣说明:

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

余额充值