[玩转系统] 关于正则表达式
作者:精品下载站 日期:2024-12-14 02:19:25 浏览:14 分类:玩电脑
关于正则表达式
简短描述
描述 PowerShell 中的正则表达式。
详细描述
笔记
本文介绍在 PowerShell 中使用正则表达式的语法和方法。它没有涵盖所有可能的表达方式。有关更完整的参考,请参阅正则表达式语言 - 快速参考。
正则表达式是用于匹配文本的模式。它可以由文字字符、运算符和其他结构组成。
本文演示了 PowerShell 中的正则表达式语法。 PowerShell 有多个使用正则表达式的运算符和 cmdlet。您可以在下面的链接中阅读有关其语法和用法的更多信息。
- Select-String
- -匹配和-替换运算符
- - 分割运算符
- 带有 -regex 选项的 switch 语句
默认情况下,PowerShell 正则表达式不区分大小写。上面显示的每种方法都有不同的方式来强制区分大小写。
- 对于
Select-String
,请使用CaseSensitive 参数。 - 对于使用正则表达式的运算符,请使用区分大小写的版本:
-cmatch
、-creplace
或-csplit
- 对于
switch
语句,请使用-casesensitive
选项
字符文字
正则表达式可以是文字字符或字符串。该表达式使引擎精确匹配指定的文本。
# This statement returns true because book contains the string "oo"
'book' -match 'oo'
字符类
虽然如果您知道确切的模式,字符文字就可以工作,但字符类允许您不太具体。
字符组
[character group]
允许您一次匹配任意数量的字符,而 [^character group]
仅匹配不在该组中的字符。
# This expression returns true if the pattern matches big, bog, or bug.
'big' -match 'b[iou]g'
如果要匹配的字符列表包含连字符 (-
),则它必须位于列表的开头或结尾,以将其与字符范围表达式区分开。
字符范围
模式也可以是字符范围。字符可以是字母 [A-Z]
、数字 [0-9]
,甚至是基于 ASCII 的 [ -~]
(所有可打印字符)。
# This expression returns true if the pattern matches any 2 digit number.
42 -match '[0-9][0-9]'
数字
\d
字符类将匹配任何十进制数字。相反,\D
将匹配任何非十进制数字。
# This expression returns true if it matches a server name.
# (Server-01 - Server-99).
'Server-01' -match 'Server-\d\d'
单词字符
\w
字符类将匹配任何单词字符 [a-zA-Z_0-9]
。要匹配任何非单词字符,请使用 \W
。
# This expression returns true.
# The pattern matches the first word character 'B'.
'Book' -match '\w'
通配符
句点 (.
) 是正则表达式中的通配符。它将匹配除换行符 (\n
) 之外的任何字符。
# This expression returns true.
# The pattern matches any 4 characters except the newline.
'a1\ ' -match '....'
空白
您可以将任何空白字符与 \s
字符类匹配。您可以使用 \S
匹配任何非空白字符。您可以将文字空格字符与
匹配。
# This expression returns true.
# The pattern uses the whitespace character class to match the leading
# space and a literal space to matching the trailing space.
' - ' -match '\s- '
量词
量词控制输入字符串中应出现每个元素的实例数。
以下是 PowerShell 中可用的一些量词:
*
零次或多次。
+
一次或多次。
?
零次或一次。
{n,m}
至少 n
次,但不超过 m
次。
星号 (*
) 与前一个元素匹配零次或多次。结果是,即使没有该元素的输入字符串也会匹配。
# This returns true for all account name strings even if the name is absent.
'ACCOUNT NAME: Administrator' -match 'ACCOUNT NAME:\s*\w*'
加号 (+
) 与前一个元素匹配一次或多次。
# This returns true if it matches any server name.
'DC-01' -match '[A-Z]+-\d\d'
问号 ?
与前一个元素匹配零次或一次。与星号 *
一样,它甚至会匹配缺少该元素的字符串。
# This returns true for any server name, even server names without dashes.
'SERVER01' -match '[A-Z]+-?\d\d'
{n, m}
量词可以通过多种不同的方式使用,以允许对量词进行精细控制。第二个元素 m
和逗号 ,
是可选的。
{n}
精确匹配 n
次。
{n,}
匹配至少 n
次。
{n,m}
匹配 n
和 m
次。
# This returns true if it matches any phone number.
'111-222-3333' -match '\d{3}-\d{3}-\d{4}'
锚
锚点允许您根据输入字符串中的匹配位置来导致匹配成功或失败。
两个常用的锚点是^
和$
。插入符号 ^
匹配字符串的开头,$
匹配字符串的结尾。锚点允许您在特定位置匹配文本,同时丢弃不需要的字符。
# The pattern expects the string 'fish' to be the only thing on the line.
# This returns FALSE.
'fishing' -match '^fish$'
笔记
定义包含锚点 ($
) 的正则表达式时,应将正则表达式括在单引号 ('
) 中。如果使用双引号 ("
),PowerShell 会将字符串解释为可扩展变量表达式。
在 PowerShell 中使用锚点时,您应该了解单行和多行正则表达式选项之间的区别。
- 多行:多行模式强制
^
和$
匹配每行的开头,而不是输入字符串的开头和结尾。 - Singleline:单行模式将输入字符串视为SingleLine。它强制
.
字符匹配每个字符(包括换行符),而不是匹配除换行符\n
之外的每个字符。
要了解有关这些选项以及如何使用它们的更多信息,请访问正则表达式语言 - 快速参考。
转义字符
反斜杠 (\
) 用于转义字符,这样它们就不会被正则表达式引擎解析。
以下字符被保留:[]().\^$|?*+{}
。
您需要对模式中的这些字符进行转义,以匹配输入字符串中的它们。
# This returns true and matches numbers with at least 2 digits of precision.
# The decimal point is escaped using the backslash.
'3.141' -match '3\.\d{2,}'
正则表达式类有一个静态方法可以为您转义文本。
[regex]::escape('3.\d{2,}')
3\.\d\{2,}
笔记
这会转义所有保留的正则表达式字符,包括字符类中使用的现有反斜杠。确保仅在需要转义的模式部分上使用它。
其他字符转义
还有保留的字符转义,可用于匹配特殊字符类型。
以下是一些常用的字符转义:
\t
匹配一个选项卡
\n
匹配换行符
\r
匹配回车符
分组、捕获和替换
分组构造将输入字符串分成可以捕获或忽略的子字符串。分组的子字符串称为子表达式。默认情况下,子表达式在编号组中捕获,但您也可以为其指定名称。
分组构造是用括号括起来的正则表达式。捕获与所附正则表达式匹配的任何文本。以下示例将输入文本分为两个捕获组。
'The last logged on user was CONTOSO\jsmith' -match '(.+was )(.+)'
True
使用 $Matches
Hashtable 自动变量检索捕获的文本。代表整个比赛的文本存储在键 0
中。请务必注意,$Matches
哈希表仅包含任何匹配模式的第一次出现。
$Matches.0
The last logged on user was CONTOSO\jsmith
捕获存储在从左到右递增的数字Integer键中。 Capture 1
包含用户名之前的所有文本,capture 2
仅包含用户名。
$Matches
Name Value
---- -----
2 CONTOSO\jsmith
1 The last logged on user was
0 The last logged on user was CONTOSO\jsmith
这很重要
0
键是一个整数。您可以使用任何哈希表方法来访问存储的值。
PS> 'Good Dog' -match 'Dog'
True
PS> $Matches[0]
Dog
PS> $Matches.Item(0)
Dog
PS> $Matches.0
Dog
命名捕获
默认情况下,捕获按从左到右的升序数字顺序存储。您还可以为捕获组分配名称。此名称成为$Matches
Hashtable自动变量上的键。
在捕获组内,使用 ?
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag