我知道,我知道,现在我有两个问题,但这里的正则表达式意味着我不必编写两个复杂的循环。相反,我有一个只有我明白的正则表达式,我才会受雇于yonks。Java replaceAll()&split()违规
我有一个字符串,说stack.overflow.questions[0].answer[1].postDate
,我需要得到[0]和[1],最好在数组中。 “简单!”我的神经元惊叹,只需在输入字符串中使用正则表达式和split
方法;所以我想出了这个:
String[] tokens = input.split("[^\\[\\d\\]]");
这将产生以下:
[, , , , , , , , , , , , , , , , [0], , , , , , , [1]]
哦,亲爱的。所以,我想, “你会做replaceAll
在这种情况下?”:
String onlyArrayIndexes = input.replaceAll("[^\\[\\d\\]]", "");
它生产:
[0][1]
嗯。为什么这样?我正在寻找一个包含“[0]”作为第一个元素和“[1]”作为第二个元素的双元素字符串数组。为什么Split在这里不起作用,当Javadoc声明他们都使用Pattern类时,按照Javadoc?
总之,我有两个问题:为什么用split()
通话产生大阵与看似随意的空格字符和我是正确的思维中的replaceAll工作,因为正则表达式替换所有字符不匹配“[”一个数字和“]”?我错过了什么,这意味着我期望他们产生类似的输出(好吧,这是三个,请不要回答这个问题的线索?)。
谢谢,这是事实上,split为我的正则表达式的每个匹配给了我一个元素;这是我不明白的! – 2010-10-29 08:29:39