正则表达式以匹配一个以单词开头,以数字结尾或不以数字结尾的字符串

时间:2020-04-04 08:00:03

标签: regex powershell active-directory

我想使用Powershell搜索所有以“ jamec”开头的全称samaccountname(全名的缩写形式,例如“ Jame Cameron”),并以数字结尾,但不包括其他缩写形式,例如“ jamech”

“ jamec”-匹配 “ jamec1234”-匹配 “ jamec12”-匹配

“ jamech”-不匹配 “ jamech12”-不匹配

尝试了这个“ ^ jamec(\ d +)(?!。* \ d)”,但没有数字“ jamec”的字符串变得不匹配。

2 个答案:

答案 0 :(得分:3)

尝试使用:

^jamec\d*$

这与jamec相匹配,并可选地仅跟一个或多个数字。如果您还想匹配输入中的其他内容,请改用^jamec\d*\b

如果要确保可选数字的第一位数字不以零开头,请使用:

^jamec(?:[1-9][0-9]*)?$

Demo

答案 1 :(得分:3)

您尝试过的模式^jamec(\d+)(?!.*\d)要求jamec后面至少要有1位数字。

否定的前瞻(?!.*\d)断言,在右边的所有字符中都没有数字。


您可以使用单词边界\b,并使用*而不是+将数字匹配0次以上

^jamec\d*\b

Regex demo

要在数字后不进行任何匹配,您还可以声明空白边界

^jamec\d*(?!\S)

Regex demo