使用java regex在管道内查找匹配项

时间:2011-11-18 06:21:27

标签: java regex pipe

如何获取管道内的字符串内容?

|qwe|asd|zxc|

我怎样才能获得

qwe asd zxc

我试过这个

"\\|{1,}(\\w*)\\|{1,}"

它似乎无法正常工作

我也试过这个

"\\|{1,}[\\w*]\\|{1,}"

它只返回qwe但

2 个答案:

答案 0 :(得分:1)

如果String line="|qwe|asd|zxc|";则为 使用string[] fields = line.split("\\|");
得到你所有结果的数组..

答案 1 :(得分:1)

这不需要正则表达式,但如果你坚持使用正则表达式:

Pattern p = Pattern.compile("\\|?(\\w+)\\|");
Matcher m = p.matcher("|qwe|asd|zxc|");
while (m.find()) {
    System.out.println(m.group(1));
}

/* outputs:
qwe
asd
zxc 
*/

为什么你的正则表达式不起作用

/\|{1,}(\w*)\|{1,}//\|(\w*)\|/类似,它与管道之间的字匹配。

现在,您的示例字符串中的第一个匹配项为|qwe|

然后继续在asd|zxc|找到匹配项;根据模式,它会跳过asd并仅匹配|zxc|

您可以通过使前面的管道可选来解决此问题。