正则表达式总结
正则表达式在线测试https://c.runoob.com/front-end/854/
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