Если разрывы строк - ваша единственная проблема, вы можете использовать флаг Pattern.MULTILINE
:
Pattern.compile("^((?:https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]), (true|false), (.*)$", Pattern.MULTILINE|Pattern.CASE_INSENSITIVE);
Вы также можете вставить флаг :
Pattern.compile("(?mi)^((?:https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]), (true|false), (.*)$",);
Я позволил себе использовать другое регулярное выражение для вашего URL (это из Regex Buddy ). Это также поместит все в группу захвата.
Демо: http://ideone.com/I9vpB
public static void extract(String str) {
Pattern regex = Pattern.compile("(?mi)^((?:https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]), (true|false), (.*)$");
Matcher m = regex.matcher(str);
while (m.find()) {
System.out.println("URL: " + m.group(1));
System.out.println("Bool: " + m.group(2));
System.out.println("Text: " + m.group(3) + "\n");
}
}
public static void main (String[] args) throws java.lang.Exception
{
String str = "http://www.yahoo.com, true, web mail site\nhttp://www.google.com, false, a search site";
extract(str);
}
Выходы:
URL: http://www.yahoo.com
Bool: true
Text: web mail site
URL: http://www.google.com
Bool: false
Text: a search site