常用表达-Regular Expressions
正则表达式 ( RegEx
) 是一种用于搜索文本和文件中模式的表达语言艺术。它们可用于查找和替换文本、分析数据、验证输入、执行搜索等。简单来说,它们是可用于分析和操作字符串的过滤标准。它们可用于各种编程语言和程序,并以多种不同的方式和功能使用。
正则表达式是形成搜索模式的字母和符号序列。此外,可以使用称为元字符的模式创建正则表达式。元字符是定义搜索模式但没有字面意义的符号。我们可以在grep或
se
d或其他工具中使用它。通常,正则表达式在 Web 应用程序中实现,用于验证用户输入。
分组
除此之外,正则表达式使我们能够对所需的搜索模式进行分组。基本上,正则表达式遵循三个不同的概念,通过三个不同的括号来区分:
分组运算符
运营商 | 描述 | |
---|---|---|
1 | (a) | 圆括号用于对正则表达式的各个部分进行分组。在括号内,您可以定义应一起处理的更多模式。 |
2 | [a-z] | 方括号用于定义字符类。在括号内,您可以指定要搜索的字符列表。 |
3 | {1,10} | 大括号用于定义量词。在括号内,您可以指定一个数字或范围来指示应重复先前模式的频率。 |
4 | | | 也称为 OR 运算符,当两个表达式之一匹配时显示结果 |
5 | .* | 也称为 AND 运算符,仅当两个表达式匹配时才显示结果 |
假设我们使用OR
运算符。正则表达式搜索给定的搜索参数之一。在下一个示例中,我们搜索包含单词my
或 的行false
。要使用这些运算符,您需要使用-E
grep 中的选项应用扩展正则表达式。
或运算符
或运算符
cry0l1t3@htb:~$ grep -E "(my|false)" /etc/passwd
lxd:x:105:65534::/var/lib/lxd/:/bin/false
pollinate:x:109:1::/var/cache/pollinate:/bin/false
mysql:x:116:120:MySQL Server,,:/nonexistent:/bin/false
由于两个搜索参数之一始终出现在三行中,因此所有三行都会相应显示。但是,如果我们使用AND
运算符,对于相同的搜索参数,我们将得到不同的结果。
与运算符
与运算符
AND operator
cry0l1t3@htb:~$ grep -E "(my.*false)" /etc/passwd
mysql:x:116:120:MySQL Server,,:/nonexistent:/bin/false
基本上,我们用这个命令所说的是,我们正在寻找一个我们想要同时看到my
和 的行false
。一个简化的示例也是使用grep
两次,如下所示:
与运算符
cry0l1t3@htb:~$ grep -E "my" /etc/passwd | grep -E "false"
mysql:x:116:120:MySQL Server,,:/nonexistent:/bin/false