我不是Java的新手,但之前没有处理过Regex和Patterns。我要做的是拿一个像
这样的字符串"Class: " + data1 + "\nFrom: " + data2 + " To: " + data3 + "\nOccures: " + data4 + " In: " + data5 + " " + data6;
并仅将data_1拉出至data_n 我感谢任何帮助。
答案 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开始)