gpt4 book ai didi

Java/Regex - 查找字符串中任意位置的字符

转载 作者:行者123 更新时间:2023-12-01 18:44:39 25 4
gpt4 key购买 nike

我有一系列字符串,正在其中搜索特定的字符组合。我正在查找一个数字,后跟字母 m 或 M,后跟一个数字,然后后跟字母 f 或 F。

示例字符串是 - “Class (4) 1m5f Good” - 粗体文本是我想要从字符串中提取的内容。

这是我的代码,但不起作用。

Pattern distancePattern = Pattern.compile("\\^[0-9]{1}[m|M]{1}[0-9]{1}[f|F]{1}$\\");
Matcher distanceMatcher = distancePattern.matcher(raceDetails.toString());
while (distanceMatcher.find()) {
String word= distanceMatcher.group(0);
System.out.println(word);
}

有人可以建议我做错了什么吗?

最佳答案

正则表达式开头和结尾的 ^$ 字符为 anchors - 他们将您限制为仅包含您正在寻找的模式的字符串。第一步是删除它们。

然后您可以使用 word boundaries (\b) 将您要查找的模式限制为整个单词,如下所示:

Pattern distancePattern = Pattern.compile("\\b\\d[mM]\\d[fF]\\b");

...或者,如果您不介意您的模式出现在单词中间,例如“Class (4) a1m5f Good”,您可以删除单词边界:

Pattern distancePattern = Pattern.compile("\\d[mM]\\d[fF]");

快速注释:

  • 您实际上并不需要到处都使用 {1} - 默认假设是一个角色或角色类只发生一次。
  • 你可以将 [0-9] 字符类替换为 \d (含义相同事)。
  • 这两个链接都指向regular-expressions.info,这是学习正则表达式的绝佳资源,我强烈建议您查看:)

关于Java/Regex - 查找字符串中任意位置的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18314280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com