正则表达式模式上的否定前瞻

时间:2015-02-27 19:52:31

标签: regex

正则表达式:((?:(?!。*(?:Jr | Sr | MD | I {2,3} | IV)$)。?)(?:(?:\ w \ D [^ &安培;???%,.] +)\ S)+)(:( JR |锶| MD | II {2,3} | IV))

输入文字:Dela Cruz III

预期产出:第1组:Dela Cruz                  第2组:III

实际输出:组#1:模式不匹配,因为它检测到III并忽略整个字符串

目标:我希望我的正则表达式模式解析字符串并将“姓氏”与“发布”修复程序分开(如果有)。

模式似乎有什么问题?

1 个答案:

答案 0 :(得分:0)

前瞻是关于紧跟在前面的字符,类或捕获组之后的内容。这个小小的补充使得这个工作在这一个字符串上,并且应该适用于一般的单一名称样式,但如果您的目标是提取而不是验证单个名称,我们将需要更多示例。

删除$可能更类似于您想要的解决方案,这取决于这些名称是否是整个字符串。

((?:(?!.*(?:Jr|Sr|MD|I{2,3}|IV)$)\.?)(?:(?:\w\D[^&%,.]+)\s?)+)

您正在进行验证还是提取?我发布的更多是验证模式。