在Java

时间:2015-06-13 20:19:31

标签: java regex

在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"

通过将“tiger”和“lion”作为组来查找,而在这种情况下,我不希望希望它匹配,因为在开头没有(右)名称。

希望解释清楚...... 感谢

1 个答案:

答案 0 :(得分:2)

您需要在fname和lname:

之间使用OR
(?:John|Smith|John Smith) wants a ([a-z]*) and a ([a-z]*)