Java正则表达式<省略号> </省略号>

时间:2014-03-21 16:55:06

标签: java regex

我正在阅读一些旧代码,这些代码似乎旨在在一个目录中取出一系列句点(......)。它利用java正则表达式来实现这一目标。这是使用的代码。

input = input.replaceAll( ".*<elipses>.*", "" );

但是,除了这里,我没有看到带有“&lt;&gt;”的正则表达式:

特殊构造(命名捕获和非捕获)
(?<name>X) X,作为命名捕获组

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

<elipsis>是什么意思?

1 个答案:

答案 0 :(得分:3)

看起来就像一个Java 7命名组,其语法似乎不正确。

正确的语法如下:

//                           | named group "stuff" matches 0 or more characters
//                           |           | named group "ellipses" 3 consecutive dots
//                           |           |                     | non grouped stuff
Pattern p = Pattern.compile("(?<stuff>.*)(?<ellipses>\\.\\.\\.).*");
String input = "blah ... blah";
Matcher m = p.matcher(input);
if (m.find()) {
    // printing back reference to named group "stuff"
    System.out.println(m.group("stuff"));
    // printing back reference to named group "ellipses"
    System.out.println(m.group("ellipses"));
}

<强>输出

blah 
...

否则,您的Pattern正在尝试实际匹配包含<ellipses>的某个标记,前面有任意数量的字符,后跟相同的字符。

对Java 7命名组here.

的一些API引用