регулярное выражение для соответствия строки, начинающейся со слова и заканчивающейся числом или без - PullRequest
4 голосов
/ 04 апреля 2020

Я хочу использовать powershell для поиска по всем именам samaccount AD. Начните с "jame c" - краткой формы полного имени, например, "Jame Cameron", - и заканчивайте цифрой, но не включайте другую краткую форму, например "jamech"

"jame c" - соответствует "jamec1234" - соответствует "jamec12" - соответствует

"jamech" - не соответствует "jamech12" - не соответствует

пробовал "^ jame c (\ d +) (?!. * \ D) ", но строка без номера" jame c "становится не совпадающей.

Ответы [ 2 ]

3 голосов
/ 04 апреля 2020

Шаблон, который вы пробовали ^jamec(\d+)(?!.*\d), требует, чтобы после jame c было хотя бы 1 ди git.

Отрицательный взгляд (?!.*\d) утверждает, что во всех символах справа не может быть ди git настоящего.


Вы можете использовать границу слова \b и сопоставьте цифры 0+ раз, используя * вместо +

^jamec\d*\b

Regex demo

Чтобы ничего не совпадать после цифр, вы также можете утверждать граница пробелов

^jamec\d*(?!\S)

Regex demo

3 голосов
/ 04 апреля 2020

Попробуйте использовать:

^jamec\d*$

Это соответствует jamec, за которым может быть выбрана только одна или несколько цифр. Если вы хотите также сопоставить другой контент во входных данных, вместо этого используйте ^jamec\d*\b.

Если вы хотите убедиться, что первый di git в дополнительном номере не начинается с нуля, тогда используйте:

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

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...