java - 使用正则表达式在字符串中查找多个匹配项的索引的问题

标签 java regex string

我正在尝试使用正则表达式(下面的测试代码)在字符串中查找多个匹配项的索引,以与外部库一起使用。

static String content = "a {non} b {1} c {1}";
static String inline = "\\{[0-9]\\}";
public static void getMatchIndices()
{
    Pattern pattern = Pattern.compile(inline);
    Matcher matcher = pattern.matcher(content)
    while (matcher.find())
    {
        System.out.println(matcher.group());
        Integer i = content.indexOf(matcher.group());
        System.out.println(i);
    }
}

输出:

{1}
10
{1}
10

它找到两个组,但返回两个组的索引 10。有什么想法吗?

最佳答案

来自 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#indexOf(java.lang.String ):

Returns the index within this string of the first occurrence of the specified substring.

因为两者都匹配相同的东西('{1}'),所以在这两种情况下都会返回第一次出现的地方。

您可能想使用 Matcher#start()确定比赛的开始。

关于java - 使用正则表达式在字符串中查找多个匹配项的索引的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13704200/

相关文章:

java - 检查Java中是否存在枚举

c# - 在 .NET 的输出字符串中将列表的所有项目连接在一起

java - 如何将用户输入行从输入文件打印到输出文件

java - 为什么Socket Server关闭后,TCP接收方还能接收到数据?

javascript - 针对字符测试变量

regex - CMake:如何在 Regexp 替换中获取反斜杠文字?

regex - sed 替换星号

java - 在 Java 中,嵌套类与其外部类之间的关系是什么?

java - 无法使用 android UsbSerial 库将数据发送到 USB 设备

php - 带有css的php的样式和定位字符串