java - 如何在java中的字符之间使用.matches来匹配包含.*的字符串

标签 java regex string-matching

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 是否与 str2 匹配,除了 Alex 部分。

注意 - Alex 是这里的一个变化部分。可能是汤姆、哈利等。

所以我尝试了:-

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 (.*)

最佳答案

您的正则表达式将匹配“I”和“am”之间的两个空格,因此它不会匹配字符串

"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 am good at it. I love it.
My hobby is playing "Tennis". I (Alex) am good at it. I (Alex) love it.

关于java - 如何在java中的字符之间使用.matches来匹配包含.*的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20656039/

相关文章:

java - "Lambda expressions are not supported in -source 7, use -source 8 to enable lambda expressions"

java - 正则表达式捕获组并忽略最后两个字符(其中一个是可选的)

javascript - 自定义电话号码正则表达式

regex - emacs lisp匹配任意字符串中的字符串匹配

解析网站以返回玩家列表的 Java 代码不会返回任何内容

java - 有没有办法清除 HTML 中的无效属性?

java - 在java中删除未使用变量的内存

javascript - ng-pattern 与脚本验证

Excel MATCH 范围,没有特定的 CELL

r - 来自不同数据文件的相同字符串在 R 中不匹配