我创建了以下正则表达式(Java):
(Lord |Lady |Ser )?(Agatha|John)?([ ]??Cain)?
除了在一种情况下(也许是我在测试期间没有考虑到的其他情况),它工作正常:
正如您所看到的,当您只有姓氏时,正则表达式也会使用该单词后面的空格。我完全理解为什么,但我不知道如何解决它。
此正则表达式用于将人员查找为表示书籍内容的大文本文件。当然,它必须与我当前的工作环境(Java)兼容。
答案 0 :(得分:2)
您可以使用正则表达式回顾来实现目标。
\b(?<!\S)(?:(Lord|Lady|Ser)\s+)?(Agatha|John)?(?:\s*(?<=\b)(Cain))?(?<=\S)\b
@ regex101
它具有与您的标准相匹配(可能超过)的这些品质:
将regex101与示例数据联系起来,与正则表达式相关联。