Я пытаюсь использовать регулярные выражения для сопоставления определенных строк в файле, но у меня возникли некоторые проблемы.
Файл содержит такой текст:
Mario, 123456789
Luigi, 234-567-890
Nancy, 345 5666 77533
Bowser, 348759823745908732589
Peach, 534785
Daisy, 123-456-7890
Я пытаюсь сопоставить только цифры как XXX-XXX-XXX или XXX XXX XXX.
Я пробовал несколько разных способов, но он всегда ожидает чего-то, чего я не хочу, или он говорит мне, что все ложно.
Я использую PowerShell для этого.
Сначала я попробовал:
{$match = $i -match "\d{3}\-\d{3}\-\d{3}|\d{3}\ \d{3}\ \d{3}"
Write-Host $match}
Но когда я это делаю, это соответствует длинному сильному чисел и XXX-XXX-XXXXX
.
Я прочитал что-то, сказав, что n будет соответствовать точному количеству, поэтому я попробовал это ...
{$match = $i -match "\d{n3}\-\d{n3}\-\d{n3}|\d{n3}\ \d{n3}\ \{n3}"
Write-Host $match}
Это сделало все ложным ...
Итак, я попробовал
{$match = $i -match "\d\n{3}\-\d\n{3}\-\d\n{3}|\d\n{3}\ \d\n{3}\ \d\n{3}"
Я также попробовал ленивый квантификатор, ?
:
{$match = $i -match "\d{3?}\-\d{3?}\-\d{3?}|\d{3?}\ \{3?}\ \{3?}"
Write-Host $match}
Все еще ложь ...
Последнее, что я попробовал, было это ...
{$match = $i -match "\d[0-9\{3\}\-\d[0-9]\{3\}\-\d[0-9]{3\}|\d[0-9]\{3\}\ \d[0-9]\{3}\ \d[0-9]\{3\}"<br>
Write-Host $match}
Все еще не повезло ...