首页 > 其他分享 >正则表达式总结

正则表达式总结

时间:2023-11-11 12:12:29浏览次数:31  
标签:总结 表示 匹配 正则表达式 pattern filename awk

正则表达式总结

正则表达式在线测试https://c.runoob.com/front-end/854/

image

1.通用概念

是什么?
正则表达式是编程语言中的 通用模式配置 语法
不同编程语言,使用大同小异。
英语:regex,grep

通用概念
1.普通字符
2.特殊字符(元字符)
	特殊含义的字符
	. 表示任意字符,除了换行符
	^ 表示以什么开头
	$ 表示以什么结尾
	| 或者
	* >=0
	?0,1
	+ >=1
3.转移字符(\)
4.[]表示one,
	[abc]
	[^abc] 表示不是abc中的任意字符。
	[a-z]
5.()表示group,捕获组
6.量词
	*
	?
	+
	{m}
	{m,}
	{m,n}
7.预定义字符
	特殊含义的字符
	\d 表示数字0-9 理解为digital
	\w 表示字符[a-zA-Z0-9_] 理解为word
	\s 表示空白字符,包括空格,tab换行 理解为space
	\D 表示非\d
	\W 表示非\w
	\S 表示非\s
8.修饰符
	g 表示全局匹配,理解为global
	i 表示忽略大小写匹配,理解为ignore或insensitive(不敏感)=
	m 表示行匹配,通常和^&结合使用,
		加了m修饰符,相比之前每一个都进行匹配,匹配到多个结果(换行的字符串)	
		不加m修饰符,最多只能搜一个结果(换行的字符串)	

2.正则表达式使用

1.Java中使用

java.util.regex包,提供正则表达式支持

//模式 编译regex表达式
Pattern.compile("表达式",修饰符) //修饰符可选
//匹配
Matcher.match("要匹配的字符串")

例子:
1.匹配数组,输出
2.匹配字符串,替换
3.分割字符串

2.JS中使用

let regex = new RegExp('表达式')
let regex = /表达式/

常用方法
regex.test(要匹配的字符串) 返回boolean值
regex.exec(要匹配的字符串) 返回匹配结果,通常数组

3.Nginx配置中使用

用于location块的路径匹配

location ~  ^/api/ { ... }  ~表示用正则表达式匹配,^表示以/api/开头进行匹配
location ~* ^/api/ { ... }  *表示匹配忽略大小写
location ~* \.(jpg|png)$ { ... } $表示匹配以什么结尾。
	用正则表达式,忽略大小写匹配路径,匹配.jpg或.png文件

4.centos中使用

grep 文本搜索工具
grep 'pattern' filename  匹配包含字符串的行
grep -E 'pattern' filename 用正则表达式,匹配包含字符串的行
grep -c 'pattern' filename 统计匹配行的数量

sed 流编辑工具
sed 's/pattern/replacement/' 正则表达式匹配到的内容,替换掉

awk 文本处理工具
awk '{ if ($1 ~ /pattern/) print $2 }' filename

shell脚本中

#!/bin/bash
if [[ "example" =~ ^ex ]]; then
    echo "String starts with 'ex'"
fi

;命令分割符,表示对if和then分割,便于查看。可使用换行替代。
[[ ]] 和 =~ 运算符一起使用,进行正则表达式匹配。

扩展补充:

awk用法

awk是文本处理工具


基本语法
awk 'pattern { action }' filename
pattern: 是一个正则表达式
{ action }: 是一个动作块,表示当 pattern 匹配到时要执行的动作。

内置变量
$0 表示整行
$1,$2,$3... 表示第几个字段(通常是通过空格或制表符分隔的文本)
NF 【当前行】的字段数 !
NR 【当前行】的行号


入门demo:
1.条件过滤,打印匹配到的行
	awk '/info/ { print $0}' filename 
2.打印整行
	awk '{print $0 }'
3.打印某些列
	awk '{print $1,$2}'
4.计算总和
	awk '{ sum += $1} end { print sum}' filename
5.格式化输出
	awk '{ printf "Name: %-10s Score: %d\n", $1, $2 }' filename

6.自定义分隔符:
	awk -F':' '{ print $1, $3 }' OFS='\t' /etc/passwd
		输入分割设置为:,输出分割符号设置为\t 

7.模式范围:
	awk '/start/,/end/ {print $0}' 
		打印【从】包含 "start" 的行【到】包含 "end" 的行的【内容】

格式化输出

格式化输出,用于展示数据

通用的格式化输出规则
1.对齐
	- 表示左对齐
	+ 表示右对齐 默认
	0 表示居中对其

2.宽度
	表示输出字符个数(或理解为宽度)

2.精度(针对浮点数)
	控制浮点数小数点个数,比如.2f

3.类型
	s 字符串
	d 整数
	f 浮点数

个人理解
%对齐宽度精度类型 + 其他,比如\t
%表示格式化输出开始

%+10s
%+10d
%+10.2f
+是默认对其方式,可以省略

java中例子
		String name = "John";
        int age = 25;
        double height = 1.75;
        System.out.printf("Name: %-10s Age: %3d Height: %.2f\n", name, age, height);

shell脚本例子

	#!/bin/bash
	name="John"
	age=25
	height=1.75
	printf "Name: %-10s Age: %3d Height: %.2f\n" "$name" "$age" "$height"

标签:总结,表示,匹配,正则表达式,pattern,filename,awk
From: https://www.cnblogs.com/juna3066/p/17825763.html

相关文章

  • 2023-2024-1 20231402《计算机基础与程序设计》第7周学习总结
    2023-2024-120231402《计算机基础与程序设计》第7周学习总结这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第7周作业这个作业的目标自学计算机科学概论第8章,《C语言程序设计》第6章 教材学习内容......
  • #2023-2024-1 20231308 《计算机基础与程序设计》第七周学习总结
    2023-2024-120231308《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第七周作业这个作业的目标自学计算机科学概论第8章《C语言程序设计》第6章作......
  • Js选择器总结
    Js选择器总结 一、原生JS选择器#JS选择器常用的有getElementById()、getElementsByName()、getElementsByTagName()、getElementsByClassName()、querySelector()、querySelectorAll()A:getElementById(ID):返回对指定ID的第一个对象的引用,如果在文档中查找一个特定的元......
  • 浅浅总结一下
    保留字是Pythoni已经被赋予特定意义的一些单词,保留字严格区分大小写标识符:标识符可用来给变量、函数、类、模块和其他对象命名标识符的命名规则:可以是字母(包含中文)、数字、下划线,第一个字符不能是数字不能是Python中的保留字标识符严格区分大小写以下划线_开头的标识符有特殊意......
  • 每日总结31
    软件设计                 石家庄铁道大学信息学院 实验10:组合模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解组合模式的动机,掌握该模式的结构;2、能够利用组合模式解决实际问题。 [实验任务一]:组合模式用透明组合模式实现教材中......
  • 2023年11月10日总结
    更好的观看总结今天早上是练习赛,还是USACO的题目。最后一道题是白金组的,比较有难度。前三道题还是很简单的,具体可以看我的USACO作题记录1。前几次练习赛USACO的题目我就没有放在那个里面的,比较麻烦,以后就会放在那里面了,请谅解。题解也请参照那个里面的,这里就不放了。那就......
  • 每日总结20231110
    代码时间(包括上课)5h代码量(行):100行博客数量(篇):1篇相关事项:1、今天是周五,天气很冷,还下雪来着,所以不愿意出被窝,所以上午下午赖床来着。2、今天晚上进行了C#的相关练习,对C#也有了一定的理解了。3、今天晚上打算复习复习数学,明天有考试,加油,加油,加油!......
  • To_Heart—总结——连通块 dp(抑或 连续块 dp)
    简介有一类问题,他们需要计算满足在序列上插入给定顺序的元素,其贡献/限制只与两旁的元素有关,但元素插入的位置是不一定的,所以会有代价的最值和方案数的统计。而对于这类问题,我们其实可以不关心每一次插入的具体位置在哪里,而只关注他的相对位置(比如在某个数左边、在某个数左边且与......
  • 2023-2024-1 20231402《计算机基础与程序设计》第7周学习总结
    2023-2024-120231402《计算机基础与程序设计》第7周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第7周作业这个作业的目标自学计算机科学概论第8章,《C语言程序设计》第6章作业正......
  • 2023-2024 20231404高伟光《计算机基础与程序设计》第七周学习总结
    作业信息作业班级23级14班作业要求第七周要求作业目标自主学习计算机概论第八章,学习c语言第六章作业正文此博客教材内容总结计算机概论:应用层涉及了数据结构,本章介绍了栈(先进后出),队列(先进先出),列表(线性,无线),树,二叉树(每个节点只有一个父母节点,两个子节点),二......