2011-11-23 51 views
1

字符串相关finding matches inside pipes using java regexp在java中使用正则表达式。让周围的管道

我试图获取管道,但周围没有字符串里面一个巨大的办法。例如,我输入这个。

|asd|qwe|zxc||| 

采用分体式OR一些正则表达式,我得到

result 1 = '', 
result 2 = 'asd', 
result 3 = 'qwe', 
result 4 = 'zxc', 
result 5 = '', 
result 6 = '' 

结果1,5和6包含0长度的字符串和是确定。但我的问题是我不能得到一个结果,这将使我在最后一个管道右侧的零长度字符串。我尝试了几种组合,我似乎无法弄清楚。使用string.split方法似乎也没有得到最后一个管道右侧的零长度字符串。但它会在第一个管道的左侧获得第一个零长度的字符串。

任何帮助,建议将不胜感激。我并不是说要让其他人做我的工作,我只是需要一点帮助正则表达式,因为我刚开始了解这种技术。

回答

1

你想使用这两个参数String.split(String, int)方法与第二个参数是-1:

"|asd|qwe|zxc|||".split("\\|", -1)

唯一的一个参数split()方法是一样的,以split("pattern", 0)调用其丢弃尾部的空格。

的Javadoc在这里:String.split(String, int)

+0

谢谢!感谢帮助。 :D –

+0

我现在明白了如果n是非正数,那么该模式将尽可能多地应用,并且该数组可以具有任何长度。如果n为零,则模式将尽可能多次应用,数组可以有任意长度,并且尾随的空字符串将被丢弃。 –

0

不是很漂亮,但..

if(yourString.endsWith("|")){ 
    String toSplit = yourString + "|"; 
    String[] tokens = toSplit.split("|"); 
} 
+0

:D我很专注于正则表达式,我忘了考虑解决方法。嘿KayKay,感谢您的建议。 :D:D –

+0

我可以尝试这个到我可能遇到的其他问题 –