【问题标题】:regex to match a string start with a word and end with or without number正则表达式匹配以单词开头并以或不以数字结尾的字符串
【发布时间】:2020-04-04 08:00:03
【问题描述】:

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

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

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

试过这个 "^jamec(\d+)(?!.*\d)" 但没有数字 "jamec" 的字符串不匹配。

【问题讨论】:

标签: regex powershell active-directory


【解决方案1】:

尝试使用:

^jamec\d*$

这匹配jamec,后跟可选的只有一位或多位数字。如果您还想匹配输入中的其他内容,请改用^jamec\d*\b

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

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

Demo

【讨论】:

  • 多了一个不匹配的大小写,数字以0开头,jamec01。你能帮忙吗
【解决方案2】:

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

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


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

^jamec\d*\b

Regex demo

要在数字之后不匹配任何内容,您还可以断言空白边界

^jamec\d*(?!\S)

Regex demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多