用于检查输入名称的Java正则表达式

时间:2012-10-16 16:36:40

标签: java regex

我知道正则表达式不一定是这项工作的最佳工具,但我想知道这是否可以用Java regexen实现:

假设我有一个数据集,其名称由换行符分隔,如下所示:

John Doe  
Jane Roe  
Richard Miles  

(在实际系统中自然有 lot 更多名称)

我将阅读数据,我将分别得到名字和姓氏,但它们不一定是相同的顺序。

现在,问题是,是否有任何方法可以为理查德·迈尔斯(Richard Miles)构建一个与“迈尔斯·理查德”和“理查德·迈尔斯”相匹配的正则表达式?我知道有很多其他方法可以做到这一点,但我特别想找到一个基于正则表达式的解决方案(不是因为它必然实用,但我觉得它很有趣)

编辑以澄清:我的意思是我需要一个正则表达式,比如“理查德迈尔斯”,它将匹配“理查德迈尔斯”和“迈尔斯理查德”,最好不仅仅是(Richard Miles|Miles Richard)因为那里的乐趣在哪里?

这绝不应该是实用的,我只关心regexen是否可以做这样的事情。

2 个答案:

答案 0 :(得分:2)

它需要复杂而聪明吗?我的意思是这可行。

\b(Miles Richard|Richard Miles)\b

答案 1 :(得分:1)

是的,请看一下: -

^(\\w+)\\s(\\w+)$

它会匹配开头(^\\w+)后的单词,后跟空格(\\s),后跟另一个单词(\\w+$)

你只是在寻找这个吗?