随笔 - 911  文章 - 5  评论 - 94  阅读 - 243万

正则表达式中的小括号用法

小括号中的连续字符作为可选:

"Nov" -match "\bNov(ember)?\b"  返回true   

"November" -match "\bNov(ember)?\b"   返回true   

 

正则表达式中的小括号的作用是对字符进行分组,并保存匹配的文本。与位于小括号之间的模式匹配的内容都会被捕获

"92/01/2009Description"  -match "^(\d)(\d)" 

返回值为9 ,2

 

当小括号中的内容不是想捕获的对象时,即小括号的内容不作为捕获对象,采用非捕获小括号可以提高匹配效率。

 

"92/01/2009Description"  -match "^(\d)(?:\d)"

返回值为9

"92/01/2009Description"  -match "^(?:\d)(?:\d)"

返回 92

为每个子表达式定义名称:

"92/01/2009Description"  -match "^(?<first>\d)(?<second>\d)" 

$matches.first   #返回9

 

()小括号就是括号内看成一个整体 ,将基本的单元合成一个大的单元。括号匹配字符串,并记住匹配结果,匹配结果则保存在结果数组中。如果只是用它来做分组,方法是在左括号的后边加上:?,这里第一个圆括弧只是用来分组,而不会占用捕获变量。

中括号就是匹配括号内的其中一个。

大括号就是匹配几次

 

| 表示 或    例:"Bob and Ted" -match "Alice|Bob"  返回true    

         "Peter and Bob" -match "and (Bob|Willy)"  返回true   

 

",Mab,e2," -replace "^,","" #返回值:Mab,e2, 只替换开头处的逗号
",Mab,e2," -replace ",$","" #返回值:,Mab,e2 只替换结尾处的逗号
",Mab(,2323)e(aaa)2," -replace "\(.*?\)","." #返回值:,Mab.e.2, 替换小括号及其里面的任意内容为点
复制代码
$aa="helloword123"
$pattern="hell([\w]+?)word([\d]+)"
$pattern="hell(\w+?)word(\d+)"

$r=[regex]::match($aa,$pattern)
$r.groups[1].Value #返回值:o
$r.groups[2].Value #返回值:123

$aa -replace $pattern,'$1$2' #返回值:o123   $1,$2表示匹配到的正则里面的小括号的内容,$1是第一个小括号里匹配到的o,$2是第二个小括号里匹配到的123
$aa -match $pattern #同上,中括号可加可不加
复制代码
$aa="helloword123"
$pattern2="hell(?<Name1>(\w+?))word(?<Name2>(\d+))" #给每个小括号匹配到的内容添加Name1、Name2,用于后续显示引用
$r2=[regex]::match($aa,$pattern2)
$r2.Groups["Name1"].Value #返回值等同于 $r.groups[1].Value
$r2.Groups["Name2"].Value #返回值等同于 $r.groups[2].Value

 

[regex]::match("2023/2/2","^([0-9]{1,2}.[0-9]{1,2}.[0-9]{2,4}|[0-9]{2,4}.[0-9]{1,2}.[0-9]{1,2})") #匹配日期
[regex]::match("2023/2/2 9:40:21","^(?<log_date>([0-9]{1,2}.[0-9]{1,2}.[0-9]{2,4}|[0-9]{2,4}.[0-9]{1,2}.[0-9]{1,2})\s*[0-9: ]{7,8}\s*(PM|AM)?)")  #匹配日期和时间

 

posted on   momingliu11  阅读(18793)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示