2012-01-30 48 views
1

给定一个模式,我们可以使用S.split(pattern)将字符串S分成多个部分。但是,结果不是我想要的。我想要那些匹配模式的字符串,即分隔符。我的想法是使用拆分结果形成一个新的模式,然后再次拆分,但需要考虑各种元符号的大量情况。任何直接的方式?在Java模式匹配中获取分隔符

+0

一个例子可以帮助我们来帮助你 – Jayy 2012-01-30 06:07:37

+0

请向我们提供的例子。 – RanRag 2012-01-30 06:07:56

+2

不是正则表达式有一种'不'运算符吗?例如。在伪代码'S.split(!pattern)' – 2012-01-30 06:10:41

回答

3
+1

最好链接到最新版本的JavaDocs。我编辑了您的答案以指向J2SE 7.有关获取最新文档链接的提示,请参见[优点2](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090875) 。 – 2012-01-30 06:11:49

+0

正如@AndrewThompson在你的问题的评论中指出的那样,正则表达式有一个你可以使用的'not'运算符。 – Dawood 2012-01-30 06:24:46

+0

非运算符将不起作用,因为它会在带有背靠背分隔符的字符串上返回不正确的结果。 (IE在空格分隔的字符串中连续两个空格)。 – 2012-01-30 06:58:59

2

你不能只是运行多个裂口或你有可能得到不正确的结果。我可能会使用s.split(模式,2)...

public static Vector<String> getDelims(String s, String pattern) 
{ 
    String[] items = s.split(pattern, 2); 
    if(items.length == 1) return new Vector<String>(); 
    String delim = s.substring(items[0].length()); 
    delim = delim.substring(0, delim.length() - items[1].length());  
    Vector<String> ret = getDelims(items[1], pattern); 
    ret.add(0, delim); 
    return ret; 
}