【问题标题】:Use regex in indexOf and lastIndexOf在 indexOf 和 lastIndexOf 中使用正则表达式
【发布时间】:2019-09-20 14:39:56
【问题描述】:

在 Java 中,有没有办法使用 indexOf()lastIndexOf() 和内部的正则表达式,就像在 replaceAll() 中使用的那样,找出匹配的索引(字符的第一个和最后一个索引)字符串中的正则表达式?

【问题讨论】:

  • 你能提供你想要完成的例子吗?样本输入,预期输出?另外,如果你有的话,你尝试过的和实际的输出
  • 不,这些方法不接受正则表达式。但是您可以使用正则表达式Matcher 重复匹配find(),然后使用startendgroup 方法获取详细的索引值。

标签: java regex indexof lastindexof


【解决方案1】:

例如,这里是一个正则表达式模式,它发现 3 个 'w' 彼此相邻。 m.find() 尝试查找匹配项,如果成功则返回 true。 通过在每个m.find() 之后使用m.start(),您可以获得找到匹配的第一个索引,通过m.end(),您可以获得找到匹配的最后一个索引

Pattern p = Pattern.compile("w{3}");
Matcher m = p.matcher("www lskjdflkj www sdflkjslkjlk fsdlkfjww lksjfkjwww sldklk wwwlskjdflkjwwwlkjlj lkj");
    while(m.find())
    {
        System.out.println("start index:"+m.start()+", end index:"+m.end());
    }

输出:

start index:0, end index:3
start index:14, end index:17
start index:48, end index:51
start index:59, end index:62
start index:71, end index:74

您可以将找到的索引存储在 HashMap 或其他东西中以供以后使用(如果需要)

【讨论】:

    猜你喜欢
    • 2015-03-24
    • 2013-12-09
    • 2015-01-11
    • 2017-01-18
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    相关资源
    最近更新 更多