Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于检查输入名称的Java正则表达式_Java_Regex - Fatal编程技术网

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

用于检查输入名称的Java正则表达式,java,regex,Java,Regex,我知道正则表达式不一定是这项工作的最佳工具,但我想知道Java正则表达式是否可能: 假设我有一个数据集,其名称由换行符分隔,如下所示: John Doe Jane Roe Richard Miles (在实际系统中,名称自然要多得多) 我将读取数据,分别获取名字和姓氏,但它们的顺序不一定相同 现在的问题是,有没有办法为理查德·迈尔斯(Richard Miles)构造一个既匹配“迈尔斯·理查德”(Miles Richard)又匹配“理查德·迈尔斯”(Richard Miles)的正则

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

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

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。它将匹配由空格分隔的任意两个单词。试试看。如果不匹配,你可以再问我一次。我要试试其他的正则表达式。