-5

我有一个字符串"Foo*#*Bar*#*Foo1*#*Bar1"

我想要一个正则表达式,它在使用时String.split(String RegularExpression)会返回

[0] = "Foo";
[1] = "Bar";
[2] = "Foo1";
[3] = "Bar1";

我试过\*#*\了,但它没有返回我想要的。

4

4 回答 4

8

您需要转义两个星号:

\*#\*

所以在Java中你会做这样的事情:

String[] str = mystring.split("\\*#\\*"); 

试试Regexr.com来试验正则表达式。

于 2012-08-06T09:34:42.300 回答
3
for (String part:"Foo*#*Bar*#*Foo1*#*Bar1".split("\\*#\\*"))
    System.out.println(part);

我们需要两个星号上的两个反斜杠(在java字符串中)。

于 2012-08-06T09:40:08.917 回答
2

对于你的例子,

List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("\\w+");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    matchList.add(regexMatcher.group());
}

将返回subjectString.

或者,您可以拆分分隔符:

String[] splitArray = subjectString.split("\\*#\\*");

请注意,您必须将所有反斜杠加倍才能在 Java 字符串中使用。

于 2012-08-06T09:36:44.657 回答
1
String splitable= "Foo*#*Bar*#*Foo1*#*Bar1";
String[] splitted=splitable.split("\\*#\\*");
于 2012-08-06T09:42:16.450 回答