Поиск имен людей в документе с помощью RegEx и Powershell - PullRequest
1 голос
/ 22 января 2020

У меня есть список документов Word, я должен искать в.

Обычно документ анонимизируется, поэтому имя и фамилия заменяются одним символом.

Задача должен определить, где документ не был анонимным и чье-то имя в тексте.

Например, этот текст является приемлемым: г-н Х столкнулся с проблемой.

Этот текст также приемлем: У мистера и миссис Y возникла проблема.

Однако этот текст НЕ приемлем: у мистера Джонса возникла проблема. или это ... У мистера и миссис Джонс возникла проблема.

Я думаю, что могу получить список возможных названий (мистер, миссис, Доктор и др. c)

Так что я бы хотел contstruct выражение RegEx, которое будет захватывать вхождение TITLE, за которым следуют ДВА или более буквенных символа.

Я использую апплет Powershell Select-String, который поддерживает RegEx. Пока у меня есть этот сценарий:

$Search = "Mr[ ][A-Z][A-Z]"
$aryfiles = Get-Content "K:\Echo Maintenance\Scripts\SORDocSearch\filelist.csv"
Foreach ($file in $aryfiles) {

    If (Get-Content $file | Select-String -Pattern $Search) {
        $file
        Get-Content $file | Select-String -Pattern $Search 
    }
} 

Это выражение RegEx "Mr [] [AZ] [AZ]" Мне нужна помощь, поскольку, к сожалению, оно соответствует Mr и Mrs X, слову 'и' интерпретируется как имя.

1 Ответ

2 голосов
/ 22 января 2020

Если вы хотите совпадение с 2 буквенными символами az, вы можете попробовать 2 класса символов с необязательной группой без захвата.

\bMr (?:and Mrs )?[A-Z][a-z]\w*

Regex demo

Для названия, которые вы можете использовать чередование для соответствия различным опциям (?:Mrs?|Doctor)


или для более широкого соответствия символов, совпадающих с заглавной буквой и 1+ раз любого вида буквы:

\bMr (?:and Mrs )?\p{Lu}\p{L}+

Regex demo

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