在带有RegEx和Powershell的文档中查找人名

在带有RegEx和Powershell的文档中查找人名,regex,powershell,Regex,Powershell,我有一个word文档列表,我必须搜索 通常,文档将匿名,以便用单个字符替换名字和姓氏 任务是找出文档中没有匿名的地方,以及文本中有人的名字 例如,此文本是可接受的: X先生遇到了一个问题 该文本也可以接受: Y先生和夫人遇到了一个问题 但是,该文本不可接受: 琼斯先生遇到了一个问题。 或者这个。。 琼斯夫妇遇到了一个问题 我想我可以得到一份可能的头衔列表,先生、太太、医生等等 因此,我想构造一个正则表达式,它将捕获TITLE后跟两个或多个alpha字符的出现 我正在使用Powershell选择字

我有一个word文档列表,我必须搜索

通常,文档将匿名,以便用单个字符替换名字和姓氏

任务是找出文档中没有匿名的地方,以及文本中有人的名字

例如,此文本是可接受的: X先生遇到了一个问题

该文本也可以接受: Y先生和夫人遇到了一个问题

但是,该文本不可接受: 琼斯先生遇到了一个问题。 或者这个。。 琼斯夫妇遇到了一个问题

我想我可以得到一份可能的头衔列表,先生、太太、医生等等

因此,我想构造一个正则表达式,它将捕获TITLE后跟两个或多个alpha字符的出现

我正在使用Powershell选择字符串小程序,它支持正则表达式。 到目前为止,我有以下脚本:

$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 
    }
} 

这是正则表达式Mr[][A-Z][A-Z]我需要帮助,因为不幸的是,这与Mr和Mrs X匹配,“and”字被解释为一个名称。

如果您想要与2个字母字符A-Z匹配,您可以尝试使用2个字符类和可选的非捕获组

\bMr (?:and Mrs )?[A-Z][a-z]\w*
对于标题,您可以使用替代选项来匹配不同的选项?:Mrs?| Doctor

或者,对于匹配大写字母和1+倍任何类型字母的更广泛字符匹配:

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

像这样试一试\bMr?:和夫人[A-Z]\w+或\bMr?:和夫人[A-Z][A-Z]\w*你可以这样做\b?:和夫人???医生[A-Z][A-Za-Z]+\b谢谢。在你给出的正则表达式链接中,这似乎非常有效。由于某种原因,当文本来自Word.doc文件时,会出现一些误报。@RichardBriggs误报是什么?文件中的文本是干净的-我认为是Word格式弄乱了它。这看起来更像是一种用词友好的方式,很好地完成了搜索;请注意,PowerShell的正则表达式默认情况下不区分大小写,因此在OP命令的上下文中,必须将-CaseSensitive开关添加到Select字符串调用中。