如何在java中对字符之间包含.*的字符串使用.matches
我想检查str1是否与str2匹配,而不是Alex part 注意-Alex在这里是一个不断变化的角色。可能是汤姆、哈里等 所以我试着:如何在java中对字符之间包含.*的字符串使用.matches,java,regex,string-matching,Java,Regex,String Matching,我想检查str1是否与str2匹配,而不是Alex part 注意-Alex在这里是一个不断变化的角色。可能是汤姆、哈里等 所以我试着: 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. " 但它返回false 我做错了什
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. "
但它返回false
我做错了什么
它与:-
str2 = "My hobby is playing \"Tennis\". I (.*) am good at it. I(.*) love it. "
str1.matches(str2)
您的正则表达式将匹配“I”和“am”之间的两个空格,因此它与字符串不匹配
str2 = "My hobby is playing \"Tennis\". I (.*)
因为那里只有一个空格。而且,你在“网球”之后漏掉了圆点。但是,请注意,“.”在正则表达式中有特殊的含义。所以你想避开正则表达式中的点
尝试:
上述内容将与以下两个方面相匹配:
"My hobby is playing \"Tennis\"\\. I (?:\\(.*\\) )?am good at it\\. I (?:\\(.*\\) )?love it\\."
您需要一个能够匹配变化部分的正则表达式。这里的变化部分是带括号的名称。这个部分可能在字符串中,也可能不在字符串中。名称可以是任何英文字母串。因此,您希望匹配
[左括号][任何字母串][右括号]
。让我们为此构建一个正则表达式。两个句子的正则表达式我擅长它
和我喜欢它
都是一样的,所以你只需要复制它。现在:
1。可以有0个或1个开放式括号。0如果您根本没有提到该名称,则为1。这方面的正则表达式是:[(]?
类似地,对于闭括号,您需要[)]?
2.在I
之后必须至少有一个空格,在am
之前必须有一个空格。为此,我们需要\s+
,但我们需要转义\
,因此一个或多个空格的正则表达式变成\\s+
。同样地,在I
之后和love
之前各有一个空格
3.然后您需要一个正则表达式来匹配英语的名称/单词。这就是[a-zA-Z]*
4.最后,上述所有内容可能在句子中,也可能不在句子中,因此我们将上面构建的正则表达式括起来,如下所示[regex build over]*
。这可以确保带括号的名称也可以不存在
5.您需要退出
和\
所以最后,str2
应该是:
String str2=“我的爱好是打网球”。我[\\s+[(]?[a-zA-Z]*[)]?\\s+]*擅长网球\\。我[\\s+[(]?[a-zA-Z]*[)]?\\s+]*喜欢网球\\/code>
它将匹配以下任何str1
:
str1=“我的爱好是打网球”。我(亚历克斯)打得很好。我(亚历克斯)喜欢网球。”
str1=“我的爱好是打网球。我很擅长。我喜欢它。”
如果有帮助,请告诉我。这对我很管用
有用资源:
1.
2.“我不想使用正则表达式。”*
就是其中之一。没有它也不行。即使我使用-String str1=“我的爱好是打网球”。我很擅长。我喜欢它。String str2=“我的爱好是打网球”。我很擅长。我喜欢它。
@zapl-:P…我是说java:D中的regex类…很抱歉,兄弟,在str2中,试着用\\\\“
@grexter89:那没用。引号符号在我熟悉的任何正则表达式风格中都没有特殊意义——在Java中肯定没有。添加另一个反斜杠不会有什么坏处,但也不会有任何好处。我无法使链接正常工作…请转到并复制regex我的爱好是打“网球”\。我(?:\(.*)?我很擅长。I(?:\(.*)?喜欢它\。
在第一个文本框中,两个输入字符串在第二个框中。我会的,我明白了。我犯了一个错误。非常感谢。
"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.