拉出字符串的模式

时间:2011-10-05 21:14:58

标签: java regex string

我不是Java的新手,但之前没有处理过Regex和Patterns。我要做的是拿一个像

这样的字符串
"Class: " + data1 + "\nFrom: " + data2 + " To: " + data3 + "\nOccures: " + data4 + " In: " + data5 + " " + data6;

并仅将data_1拉出至data_n 我感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

使用此正则表达式:

Pattern pattern = Pattern.compile("Class: (.+?)\nFrom: (.+?) To: (.+?)\nOccures: (.+?) In: (.+?) (.+?)");
Matcher matcher = pattern.matcher(yourInputString);
if (matcher.find())
{
     String data1 = matcher.group(1);
     String data2 = matcher.group(2);
     String data3 = matcher.group(3);
     String data4 = matcher.group(4);
     String data5 = matcher.group(5);
     String data6 = matcher.group(6);
} else
{
    // String didn't match the specified format
}

说明:

.+?将匹配未定义时间的任何字符,但不贪婪   (),使用括号将创建一个组。组被赋予从1开始的索引(因为组0是整个匹配)

因此,(.+?)将创建任何角色的组。

匹配器的作用是在输入字符串中的某处搜索整个模式。但是由于您指定了格式,我们确切地知道整个字符串的样子。您唯一需要做的就是复制格式并用“ something ”(.+?)替换要提取的数据,您可以通过创建一组索引来提供索引。

然后,匹配器将尝试找到模式(由matcher.find()完成),并询问他们1到6组的内容是什么。

答案 1 :(得分:0)

如何使用split()和“:”,然后从splitted String []获取字符串[2i + 1]? (我从0开始)