Java 使用正则表达式匹配第二个子字符串
我需要一个正则表达式,它匹配abcasdabchjkabc中的第二个abc。 我试图写这样的代码Java 使用正则表达式匹配第二个子字符串,java,regex,Java,Regex,我需要一个正则表达式,它匹配abcasdabchjkabc中的第二个abc。 我试图写这样的代码 Pattern p = Pattern.compile("(?<=abc(.*?))abc"); 请给我看正确的 不能在look-behind断言中使用*或+ 你真的想匹配两个ABC之间的所有内容吗 或者你只是想检查一下是否有两个ABC 我认为在这两种情况下都不需要lookbehind。在lookbehind断言中不能使用*或+ 你真的想匹配两个ABC之间的所有内容吗 或者你只是想检查一下是
Pattern p = Pattern.compile("(?<=abc(.*?))abc");
请给我看正确的 不能在look-behind断言中使用*或+
你真的想匹配两个ABC之间的所有内容吗
或者你只是想检查一下是否有两个ABC
我认为在这两种情况下都不需要lookbehind。在lookbehind断言中不能使用*或+
你真的想匹配两个ABC之间的所有内容吗
或者你只是想检查一下是否有两个ABC
我认为在这两种情况下都不需要回头看。我想你想要的是:
java.util.regex.Pattern.compile("(?<=abc.{1,99})abc");
它会找到第二个abc。我想你想要的是:
java.util.regex.Pattern.compile("(?<=abc.{1,99})abc");
它会找到第二个abc。一个简单的选择是两次匹配您的模式:
工作示例:一个简单的选项是两次匹配您的模式:
工作示例:我知道匹配整个字符串的方法,当我需要替换字符串时就足够了。我只是试着只匹配第二个abc,看看正则表达式是否能做到这一点。我知道匹配整个字符串的方法,当我需要替换字符串时,这就足够了。我只是尝试只匹配第二个abc,看看正则表达式是否可以做到这一点。是的!就是我要找的那个!考虑这个字符串:ababcDEF,也许?如果这是你想要的0,将工作。主要的一点是,在查找时必须使用大括号语法。这是一个非常糟糕的解决方案,您假设查找中的abc与要匹配的abc之间的距离最多为99个字符。是的!就是我要找的那个!考虑这个字符串:ababcDEF,也许?如果这是你想要的0,将工作。主要的一点是,在查找时必须使用大括号语法。这是一个非常糟糕的解决方案,您假设查找中的abc与要匹配的abc之间的距离最多为99个字符。这也是一个很好的方法。谢谢你告诉我start和end的用法。如果没有匹配项,只需捕获java.lang.IllegalStateException。这也是一种很好的方法。谢谢你告诉我start和end的用法。如果没有匹配项,只需捕获java.lang.IllegalStateException。
Pattern.compile("abc.*?abc");
java.util.regex.Pattern.compile("(?<=abc.{1,99})abc");
String input = "abcXYabcZRabc";
Pattern p = Pattern.compile("abc");
Matcher m = p.matcher(input);
m.find(); // what to do when there is no match?
m.find(); // what to do when there is only one match?
System.out.println("Second match is between " + m.start() + " and " + m.end());