2013-12-18 25 views
0
String str1 = "My hobby is playing \"Tennis\" I am good at it. I love it." 
String str2 = "My hobby is playing \"Tennis\". I (Alex) am good at it. I(Alex) love it. " 

我想检查str1是否与除Alex部分以外的str2匹配。如何使用.matches字符串中包含。*之间的字符在java中

注 - 亚历克斯在这里是一个不断变化的部分。这可能是汤姆,HARY等

所以,我想: -

str2 = "My hobby is playing \"Tennis\". I (.*) am good at it. I(.*) love it. " 
str1.matches(str2) 

但它返回false。

我在这里做错了什么?

它适用于: -

str2 = "My hobby is playing \"Tennis\". I (.*) 
+0

“我宁愿不使用正则表达式。” '。*'*是*一个。 – zapl

+0

没有这个功能也无法正常工作。即使我用 - String str1 =“我的爱好是在玩”Tennis“,我擅长它,我喜欢它。String str2 =”我的爱好是玩“网球”。我很擅长这个。我*。爱它。' – anujin

+0

@zapl - :P ...我的意思是在java中的正则表达式类:D ...抱歉错误沟通兄弟。在str2中的 – anujin

回答

1

你的正则表达式匹配之间的“我”和“我”两个白色的空间,所以它不会匹配字符串

"My hobby is playing \"Tennis\" I am good at it. I love it." 

Becasue只有一个空格那里。此外,你错过了“网球”之后的点。但是,请注意“。”在正则表达式中有特殊的含义。所以,你想逃避点在您的正则

尝试:

"My hobby is playing \"Tennis\"\\. I (?:\\(.*\\))?am good at it\\. I (?:\\(.*\\))?love it\\." 

以上将同时匹配:

My hobby is playing "Tennis". I am good at it. I love it. 
My hobby is playing "Tennis". I (Alex) am good at it. I (Alex) love it. 
+0

莫名其妙地不为我工作:( – anujin

+1

我无法得到链接工作....去http://regexpal.com/和复制正则表达式'我的爱好是玩“网球”\。我(?:\ (。* \))?善于处理\。我(?:\(。* \))?爱它在第一个文本框和第二个框中的两个输入字符串,它将匹配 –

1

你需要一个正则表达式,可以匹配不同的部分。这里的变化部分是带括号的名称。这部分可能会或可能不会在字符串中。名称可以是任何字符串的英文字母。所以你想匹配[open-bracket][any string of alphabets][close bracket]。让我们为此构建一个正则表达式。这两个句子I am good at itI love it的正则表达式都是相同的,所以你只需要复制它。现在:

1.可以有0个或1个左括号。 0,如果你根本没有提到这个名字,那么1。正则表达式为:[(]?类似地,对于紧密括号,您需要[)]?

2.必须有空白后至少1 I和一个am之前。为此,我们需要\s+,但我们需要跳过\,因此一个或多个空格的正则表达式变为\\s+。同样,I之后的一个空间和love之前的一个空间。

3.然后你需要一个正则表达式来匹配英语的名字/单词。那简直就是[a-zA-Z]*

4.最后,所有以上可能会或可能不会出现在句子中,所以我们附上我们上面建立的正则表达式,像这样[regex-built-above]*。这确保了带括号的名称也可以不存在。

5.您需要转义.\

所以最后,str2应该是:

String str2 = "My hobby is playing \"Tennis\"\\. I[\\s+[(]?[a-zA-Z]*[)]?\\s+]* am good at it\\. I[\\s+[(]?[a-zA-Z]*[)]?\\s+]* love it\\."

这将匹配任何下列str1

str1 = "My hobby is playing \"Tennis\". I (Alex) am good at it. I (Alex) love it."

str1 = "My hobby is playing \"Tennis\". I am good at it. I love it."

让我知道它是否有帮助。它的工作对我来说..

有用的资源:

http://www.tutorialspoint.com/java/java_regular_expressions.htm

2.http://www.tutorialspoint.com/java/java_string_matches.htm

+0

I知道了,我犯了一个错误,谢谢你。 – anujin

相关问题