我是Java的新手,我正在尝试使用正则表达式。我想将一个字符串分成几个捕获组,并将它们存储在String数组中。
String[] pieces="User: text..text text".split("^(\\w):(.*)$");
System.out.println(pieces[0]);
//pices[0]="User: text..text text"
我想使用正则表达式:"User: text..text text"
将"^(\\w:)(.*)$"
拆分为正则表达式中提供的捕获组的数量(本例中为2)。我期望的是:
pieces[0]="User"
pieces[1]="text...text text"
可能有一个类似"User: foo:bar mr:potato"
的字符串。我不想每个:
字符分开,我只想"User:"
和" foo:bar mr: potato"
。我想在不使用任何循环的情况下拆分它,这有可能吗?
答案 0 :(得分:1)
如何?
String text = "User: text..text text";
String[] pieces = text.split(": ",2);
System.out.println(pieces[0]);
System.out.println(pieces[1]);
使用正则表达式,您可以这样做。
Pattern pattern = Pattern.compile("(\\w+): (.*)$");
Matcher m = pattern.matcher(text);
if (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
}
两个都打印
User
text..text text
答案 1 :(得分:1)
Java还有一个split()
方法,该方法限制了应用模式的次数
String[] pieces="User: text..text text".split(":",2);
答案 2 :(得分:0)
您可以使用Java中String类提供的split()函数来实现所需的功能。
String[] pieces = "User: text..text text".split(":");
答案 3 :(得分:0)
尝试按:
public class WordSpliter {
public static void main(String[] args) {
String[] pieces="User: text..text text".split(": ",2);
for (String piece : pieces) {
System.out.println(piece);
}
}
}
答案 4 :(得分:0)
如果您想使用实际的Regex模式/匹配器,则其设置如下
String inputString = "User: text..text text";
Pattern pattern = Pattern.compile("^(\\w):(.*)$");
Matcher matcher = pattern.matcher(inputString);
while(matcher.find()) {
for(int i = 0; i <= matcher.groupCount(); i++){
//Go through all groups in this match
System.out.println(matcher.group(i));
}
}