Java Регулярное выражение - PullRequest
4 голосов
/ 08 июля 2010

Я не очень знаком с регулярными выражениями.
Мне нужна помощь для следующих регулярных исключений:
1. Строка начинается с альфа-слова, а затем идет любая буква или цифра. например ABC с 20 января по 15 декабря
2. Строка для десятичного числа. например 450 122 224,00
3. Также, чтобы проверить, содержит ли String какой-либо шаблон, например 'Страница 2 из 20'

Спасибо.

Ответы [ 3 ]

3 голосов
/ 08 июля 2010
// 1. String start with alpha word and then followed by
//    any aplha or number. e.g. Abc 20 Jan to 15 Dec

// One or more alpha-characters, followed by a space,
//     followed by some alpha-numeric character, followed by what ever
Pattern p = Pattern.compile("\\p{Alpha}+ \\p{Alnum}.*");
for (String s : new String[] {"Abc 20 Jan to 15 Dec", "hello world", "123 abc"})
    System.out.println(s + " matches: " + p.matcher(s).matches());

// 2. String for a decimal number. e.g. 450,122,224.00
p = Pattern.compile(
        "\\p{Digit}+(\\.\\p{Digit})?|" +  // w/o thousand seps.
        "\\p{Digit}{1,3}(,\\p{Digit}{3})*\\.\\p{Digit}+"); // w/ thousand seps.
for (String s : new String[] { "450", "122", "224.00", "450,122,224.00", "0.0.3" })
    System.out.println(s + " matches: " + p.matcher(s).matches());


// 3. Also to check if String contain any pattern like 'Page 2 of 20'

// "Page" followed by one or more digits, followed by "of"
// followed by one or more digits.
p = Pattern.compile("Page \\p{Digit}+ of \\p{Digit}+");
for (String s : new String[] {"Page 2 of 20", "Page 2 of X"})
    System.out.println(s + " matches: " + p.matcher(s).matches());

Выход:

Abc 20 Jan to 15 Dec matches: true
hello world matches: true
123 abc matches: false
450 matches: true
122 matches: true
224.00 matches: true
450,122,224.00 matches: true
0.0.3 matches: false
Page 2 of 20 matches: true
Page 2 of X matches: false
0 голосов
/ 08 июля 2010

1.) /[A-Z][a-z]*(\s([\d]+)|\s([A-Za-z]+))+/

[A-Z][a-z]* в верхнем регистре

\s([\d]+) в качестве префикса номера (белый)

\s([A-Za-z]+)префиксом слова будет (пробел) * (1011 *

2.) /(\d{1,3})(,(\d{3}))*(.(\d{2}))/

(\d{1,3}) - это число от 1 до 3 цифр

(,(\d{3}))*0 или более трехзначных чисел с префиксом запятой

(.(\d{2})), являющейся двухзначным десятичным числом

3.) /Page (\d+) of (\d+)/

(\d+), являющимсяодна или несколько цифр

При написании этого (или любого регулярного выражения) мне нравится использовать этот инструмент

0 голосов
/ 08 июля 2010

1 Я не уверен, что вы имеете в виду здесь.Слово в начале, за которым следует любое количество слов и цифр?Попробуйте это:

^[a-zA-Z]+(\s+([a-zA-Z]+|\d+))+

2 Просто десятичное число будет

\d+(\.\d+)?

Получение запятых там:

\d{1,3}(,\d{3})*(\.\d+)?

3 Использование

Page \d+ of \d+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...