Получение числа из строки с помощью регулярного выражения - PullRequest
1 голос
/ 24 ноября 2010

У меня есть следующая строка HTML

<b>String :</b></b></td><td class="title">14</td>

Я пытаюсь разобрать его по порядку, чтобы получить только номер. Выглядит просто, но "s/^.*\(:digit:\).*$/\1/" показывает всю строку. Я пробовал также "s/^.*\(\d+\).*$/\1/", но он возвращает тот же результат.

Если попробовать команду "s/^.*String.*>\(.*\)<.*$/\1/", то она возвращает то, что нужно, но "s/^.*String.*>\(\d+\)<.*$/\1/" снова возвращает всю строку.

Как вы думаете, возможно ли получить здесь число из строки, указывающей включение только цифры в группу?

Редактировать: мне это нужно для языка Java. Примером здесь являются JUTS для получения рабочего регулярного выражения, которое я тестирую с помощью команды sed.

Спасибо.

Ответы [ 5 ]

3 голосов
/ 24 ноября 2010

Использование HTML :: TableExtract .

0 голосов
/ 24 ноября 2010

регулярное выражение (?:<(?:[^>])+>)(\d+)(?:(?:<\/[^>]+)+>) захватывать только цифры из вашего текста, которые являются между HTML-тегами

0 голосов
/ 24 ноября 2010

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

   s/^[^\d]*\(\d+\)<[^\d]**$/\1/

Должно быть, стоит пойти. Проверьте, нужен ли заданный шаблон [или [и позволяет ли он сначала классы символов (\ d). Если нет классов символов 0-9, это следует сделать.

0 голосов
/ 24 ноября 2010

Хотя вы не объясняете, какой язык используете, ответ прост.

Если вы захватили выражения (круглые скобки), будет несколько результатов.

Первый, # 0, это всегда весь матч. Поскольку у вас есть .* до и после цифр, в результат включается дополнительный HTML.

Однако во втором матче # 1 у вас должен быть только номер. Способ получения этого результата зависит от языка, но если вы обновите свой вопрос, мы можем помочь вам в этом.

Edit:

public static String extractNumber(String input) {
    Pattern p = Pattern.compile("s/(\\d+)/");

    Matcher m = p.matcher(input);

    if(m.find()) {
        String num = m.group(1);
        return Integer.parseInt(num);
    }

    return null;
}

При этом будет извлечено первое число, найденное во входном тексте. И это демонстрирует, как использовать группы.

Я не тестировал его, так как в данный момент у меня не настроена надлежащая среда Java, но все выглядит хорошо. Дайте мне знать, если у вас возникнут проблемы.

0 голосов
/ 24 ноября 2010

В JavaScript вы можете сделать это:

var num = parseInt(someString.replace( /\D/g , ''));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...