我已经检查了在这里可以找到的每一篇帖子,但无法弄清楚这一点。
我有一个看起来像这样的字符串:“ABC1234598901AC”
我正在尝试使用正则表达式来匹配字符串中的“5989”,但我希望能够匹配该字符串,即使其中一个字符有所不同。
为了简单起见,假设我正在字符串中搜索“59(不是 8 的随机字符)9”。
现在这是我的正则表达式:“59[^8]9”,但是当我在 Java 中使用匹配器时,它根本不匹配。
这是我用来测试这个的代码:
Matcher test = Pattern.compile("59[^8]9").matcher("ABC1234598901AC");
if (test.matches())
{
System.out.println(test.start());
System.out.println(test.end());
}
Test.matches() 永远不会计算为 true。
感谢任何帮助,谢谢!
最佳答案
您想要使用test.find()
,而不是test.matches()
。
Matcher.matches()
要求您的模式匹配整个输入(因此您需要用.*
包围模式才能匹配),而Matcher.find()
在输入字符串中搜索与您的模式匹配的第一个(然后是后续)子字符串。
关于java - 用于在非分隔字符串中查找带有通配符的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351602/