FaizanMubasher Ответов: 3

Регулярное выражение, необходимое для строки


У меня есть строка, как:

<pre>1H|\^&|||PACMAN|||||PSM||P||20170118062717|


И я хочу извлечь данные Х, Пакман, ПСМ, П и 20170118062717

Каким может быть регулярное выражение для этой строки?

Что я уже пробовал:

Вот как я стараюсь:

(?:^(R)\|(\d+)\|\^*([^|]*)\|([^|]*)\|(?:([^|]*)\|)?.*$)|(?:^(P)\|(\d+)\|\|(\d+).*$)

3 Ответов

Рейтинг:
28

OriginalGriff

Я бы начал с:
(?<=|)\w+
Что бы восстановить:

1H
PACMAN
PSM
P
20170118062717
И вручную отбросьте ведущий ноль или используйте
([a-zA-Z]+|\d{2,})(?=|)



Это очень мило. Могу ли я получить эти значения в группах?

Чтобы использовать его как группы, вам нужно будет указать точный макет - что не сложно, но зависит от ваших данных. Если образец репрезентативен и вам нужны группы только для "заполненных столбцов", но столбцы разделены символами"|", то попробуйте:
^\d(\w+)(?:|.*?){3}(\w+)(?:|.*?){5}(\w+)(?:|.*?)(\w+)(?:|.*?)(\w+)|$
Следует извлечь интересующие вас поля в виде пронумерованных групп в пределах одного совпадения.


FaizanMubasher

Это очень мило. Могу ли я получить эти значения в группах? Group1- & gt;H, Group2 - & gt; PACMAN и т. д

OriginalGriff

Ответ обновлен

FaizanMubasher

Ага! Это сработало. Спасибо.

OriginalGriff

Пожалуйста!

Рейтинг:
2

Peter Leow

Если исходная строка является

1H|\^&|||PACMAN|||||PSM||P||20170118062717|
и вы хотите извлечь
H, PACMAN, PSM, P and 20170118062717
исходя из этого, шаблон регулярного выражения должен будет соответствовать либо:
1. одна или несколько букв
[a-zA-Z]+
или
2. числовая строка из 2 цифр и выше
[0-9]{2,}
Вместе взятые, это было бы
[a-zA-Z]+|[0-9]{2,}


Рейтинг:
2

Patrice T

У вас уже есть решение, поэтому просто несколько ссылок на инструменты, которые помогут вам построить и отладить ваше регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
Это показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


FaizanMubasher

Спасибо