2015-06-13 23 views
0

我需要找到能够匹配类似句子的正则表达式:匹配两种替代或要么在Java中使用正则表达式这两个词在Java中

"John Smith wants a dog and a cat" 

"John wants a fish and a snake" 

"Smith wants a spider and a horse" 

同款无法比拟的,如果不是“约翰”或“史密斯”或“约翰史密斯”没有什么或任何不同的词。 例如,它不得匹配,如果这句话是这样的:

"Jack wants a bird and a frog" 
"wants a banana and a lemon" 

同样的话来代替动物名称应为捕获组匹配。

我尝试了很多组合,但我无法找到正确的“公式”,因为如果在开头处有不同的词或只是空的话,它也会匹配。 例如像这样:

(John)?(Smith)?wants a ([a-z]*) and a ([a-z]*) 

,但它的工作原理也是,如果我只是输入:

"wants a tiger and a lion" 

通过寻找“虎”和“狮子”的群体,而在这种情况下,我希望它匹配,只要没有(正确)的名称在开始。

希望对此的解释是很清楚..... 感谢

回答

2

您需要的FNAME和LNAME之间使用OR

(?:John|Smith|John Smith) wants a ([a-z]*) and a ([a-z]*) 
+1

它完美。谢谢! –

相关问题