用于检查输入名称的Java正则表达式
我知道正则表达式不一定是这项工作的最佳工具,但我想知道Java正则表达式是否可能: 假设我有一个数据集,其名称由换行符分隔,如下所示:用于检查输入名称的Java正则表达式,java,regex,Java,Regex,我知道正则表达式不一定是这项工作的最佳工具,但我想知道Java正则表达式是否可能: 假设我有一个数据集,其名称由换行符分隔,如下所示: John Doe Jane Roe Richard Miles (在实际系统中,名称自然要多得多) 我将读取数据,分别获取名字和姓氏,但它们的顺序不一定相同 现在的问题是,有没有办法为理查德·迈尔斯(Richard Miles)构造一个既匹配“迈尔斯·理查德”(Miles Richard)又匹配“理查德·迈尔斯”(Richard Miles)的正则
John Doe
Jane Roe
Richard Miles
(在实际系统中,名称自然要多得多)
我将读取数据,分别获取名字和姓氏,但它们的顺序不一定相同
现在的问题是,有没有办法为理查德·迈尔斯(Richard Miles)构造一个既匹配“迈尔斯·理查德”(Miles Richard)又匹配“理查德·迈尔斯”(Richard Miles)的正则表达式?我知道有很多其他的方法可以做到这一点,但我特别寻找一个基于regex的解决方案(不是因为它一定实用,而是我觉得它很有趣)
编辑澄清:我的意思是,我需要一个正则表达式,比如说,“Richard Miles”,它将在“Richard Miles”和“Miles Richard”上匹配,最好不仅仅是(Richard Miles | Miles Richard)
,因为这其中的乐趣何在
这一点都不实用,我只关心regexen是否可以做这样的事情。是的,看看这个:-
^(\\w+)\\s(\\w+)$
它将在(^\\w+)
开头匹配一个单词,然后是空格(\\s)
,最后是另一个单词(\\w+$)
你只是在寻找这个吗?它需要复杂和聪明吗?我的意思是这会有用的
\b(Miles Richard|Richard Miles)\b
因此,您正在寻找一个正则表达式,它将所有字符匹配到一个空格,然后将其余字符匹配到一个新行。这是正确的吗?不,正则表达式不会取笑它-
(Richard Miles | Miles Richard)
是(唯一的)解决方案哦,是的,这绝对有效。我真的不是想要一个有效的东西,而是一个非常聪明的东西。我只是想知道regexen是否可以做这样的事情我想你可能会,只是不确定。我澄清了我的问题。@tomek你想同时匹配这两个吗?在一行背靠背中?@tomek看看我编辑的图案。。你在找这个吗?我进一步澄清了我的问题。我只是在寻找一种不必要的聪明(坦率地说相当愚蠢)的匹配名字的方法,这样当给“Richard Miles”一个正则表达式时,正则表达式将匹配“Miles Richard”和“Richard Miles”,而不是简单地(Richard Miles | Miles Richard)把它想象成代码高尔夫,但是对于regexen。@托梅克,你甚至对他们两个都用过regex。它将匹配由空格分隔的任意两个单词。试试看。如果不匹配,你可以再问我一次。我要试试其他的正则表达式。