Java регулярное выражение для проверки URL, логическое значение, строка - PullRequest
0 голосов
/ 01 сентября 2011

Я нахожусь в процессе формулирования регулярного выражения для проверки текстовой области, которая содержит записи следующего формата,

an url, boolean(true or false), string(with or without spaces)

Например,

http://www.yahoo.com, true, web mail site
http://www.google.com, false, a search site

ИтакЯ пытался сформулировать регулярное выражение для каждой строки, как показано ниже:

(^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$)(,(true|false))(,(.*))

Следовательно, я могу проверить каждую строку, но это регулярное выражение не работает.Целое регулярное выражение не соответствует типу строки через запятую.Также есть ли способ, как я могу сделать эту проверку регулярных выражений для нескольких строк и проверки этого шаблона?

1 Ответ

1 голос
/ 01 сентября 2011

Если разрывы строк - ваша единственная проблема, вы можете использовать флаг 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...