Регулярное выражение для извлечения числа - PullRequest
0 голосов
/ 03 августа 2010

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

"<[1085674730]> привет foo1, как дела?"

I 'Я новичок с регулярными выражениями, я только хочу иметь возможность извлечь число, заключенное в символы больше / меньше и в скобках, но я не знаю, как это сделать.Я должен сопоставлять только числовые цифры, но я не уверен, какой синтаксис используется только для поиска по этим символам.

ОБНОВЛЕНИЕ:

Спасибо всем за ввод, извините, что неболее конкретно, как я объяснил kiamlaluno, я использую VB.Net в качестве языка для своего приложения.Мне было интересно, почему некоторые реализации не работают.Фактически, единственным, кто работал, был тот, который описал Мэтью Флэшен.Но это захватывает символы вокруг числа так же как самого числа.Я хотел бы только захватить число, заключенное в символы, и отфильтровать сами символы.

Ответы [ 4 ]

4 голосов
/ 03 августа 2010

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

<\[(\d+)\]>

Это протестировано с регулярным выражением ECMAScript.

Это означает:

  • \[ - литерал [
  • ( - открытая группа захвата
  • \d - цифра
  • + - одна или несколько
  • ) - закрыть группу захвата
  • \] - литерал]

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

0 голосов
/ 03 августа 2010

Объединить сообщение Мэтью с lookarounds http://www.regular -expressions.info / lookaround.html .Это исключит префикс и суффикс.

(?<=<\[)\d+(?=\]>)

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

Надеюсь, это поможет!

0 голосов
/ 03 августа 2010
$subject = "<[1085674730]> hello foo1, how are you doing?";
preg_match('/<\[(\d+)\]>/', $subject, $matches);

$matches[1] будет содержать номер, который вы ищете.

0 голосов
/ 03 августа 2010

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

/<\[([[:digit:]]+)\]>/

Если ваша реализация не поддерживает удобный синтаксис [:digit:], используйте это:

/<\[([\d]+)\]>/

И если ваша реализация не поддерживаетудобный синтаксис \d, затем используйте это:

/<\[([0-9]+)\]>/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...