2014-12-17 4 views
4

У меня есть сообщения, отформатированные как это:Как я могу отфильтровать эти данные из сообщения с регулярным выражением?

Character Name > <url=fitting:11978:14240;1:31366;1:1447;2:31952;1:14136;1:31378;1:2104;2:3608;4:12058;1:31932;1:2488;6:29001;5::>He Dead :(</url> asdf asefase 351235125 

Я хочу, чтобы отфильтровать это:

:11978:14240;1:31366;1:1447;2:31952;1:14136;1:31378;1:2104;2:3608;4:12058;1:31932;1:2488;6:29001;5:: 

Если я просто ограничить его номеров и ; и : он также будет поймать номера в сообщении и временную метку сообщения (другое свойство иногда там), так что она не работает должным образом.

Я также хочу, чтобы быть в состоянии захватить данные, если это единственное, что на входе:

:11978:14240;1:31366;1:1447;2:31952;1:14136;1:31378;1:2104;2:3608;4:12058;1:31932;1:2488;6:29001;5:: 

Иногда первый : не там.

Любые идеи, как лучше всего отфильтровать это? Я немного в тупике с регулярным выражением.

EDIT: Еще один пример

[04:04:55] Morpheus Deathbrew > is this okay? it's cap stable <url=fitting:11978:14240;1:2032;1:31366;1:1447;2:2281;1:31952;1:14136;1:31378;1:2104;1:3608;4:12058;1:2488;6:29001;6::>He Dead :(</url> 

Я думаю, что большинство решений будут соответствовать метке времени тоже в некоторых случаях. Я также хотел бы, чтобы POSSIBLY смог обработать его, если он имеет :: в сообщении чата. Может быть, матч, если у него есть :: и затем цифры? А также по крайней мере один ; между: и ::?

+0

Является '::' всегда в конце картины, или оно может не существовать или быть что-то совсем другое? – hwnd

+0

Я абсолютно уверен: всегда есть. –

ответ

2

Как о чем-то вроде

/[\d:;]+::/ 
  • [\d:;]+ соответствует любой цифре : или ;. + квантор жаден и будет потреблять каждый ::, что не может больше появляться в теле до последнего ::

  • :: соответствует последним ::

Regex Demo


EDIT

формат Обеспечение

/:?(\d+:\d+;)+\d+::/ 

Regex Demo

+0

Проблема в том, что если '::' не существует, он будет соответствовать этому шаблону в любом месте строки. – hwnd

+0

Я думаю, что это должно быть немного конкретнее:/ –

+0

Пожалуйста, см. Мое редактирование –

Смежные вопросы