java - 用于在非分隔字符串中查找带有通配符的字符串的正则表达式

标签 java regex

我已经检查了在这里可以找到的每一篇帖子,但无法弄清楚这一点。

我有一个看起来像这样的字符串:“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/

相关文章:

regex - 在 Perl 中使用预编译正则表达式时的问题

java - AsyncTask 完成后全局变量返回 0.0

java - 使用私有(private)构造函数对 spring 组件进行单元测试,无需注入(inject)

JavaScript:字符串正则表达式

java - 痛饮 : How to rename generated Java code according to a regex?

regex - 在 sed 和 awk 中使用正则表达式

java - 尝试使用 hibernate 注释时出错

java - Hive Mapreduce 作业失败

java - 借助 AlertDialog 将新对象添加到自定义数组适配器

python - 正则表达式每隔三个字符插入一个空格,行尾除外