0

我一直在尝试匹配以下字符串 -

String temp = "[[Wikipedia:Manual of Style#Links|]]" ;

使用正则表达式

boolean a = temp.matches("\\[\\[Wikipedia:[a-zA-Z_0-9]*#[a-zA-Z_0-9]*\\|\\]\\]");

"\\[\\[Wikipedia:(.*?)#(.*?)\\|\\]\\]"

"\\[\\[Wikipedia:(.*)*#(.+)*\\|\\]\\]"

"\\[\\[(.*?)#(.*?)\\|\\]\\]"

但他们都没有给出任何积极的匹配。

4

3 回答 3

1

我马上就看到了一个问题:您正在使用没有空格的字符类来匹配输入和空格。

尝试这个:

boolean a = temp.matches("\\[\\[Wikipedia:[\\w ]*#[\\w ]+\\|\\]\\]");

请注意,[a-zA-Z_0-9]可以替换为[\w](但包括所有语言的字母/数字,应该没问题)

于 2013-09-29T10:59:07.703 回答
0

只需在您的自定义字符类中添加一个空格:

String temp = "[[Wikipedia:Manual of Style#Links|]]" ;
temp.matches("\\[\\[Wikipedia:[a-zA-Z_0-9 ]*#[a-zA-Z_0-9]*\\|\\]\\]");  //true
于 2013-09-29T10:58:19.320 回答
0
public static void main(String[] args) {
    String temp = "[[Wikipedia:Manual of Style#Links|]]";
    Pattern pattern = Pattern.compile("\\[\\[Wikipedia:([\\w ]+)#([\\w ]+)\\|\\]\\]");
    Matcher matcher = pattern.matcher(temp);

    if(matcher.find()) {            
        System.out.println("Manual of Style: " + matcher.group(1));
        System.out.println("links : " + matcher.group(2));
    }
}

或者

temp.matches("\\[\\[Wikipedia:([\\w ]+)#([\\w ]+)\\|\\]\\]");
于 2013-09-29T11:12:56.893 回答