RegEX — найти строку магнитной карты для подстрок дорожки 1 и дорожки 2

Считыватель карт — это просто ввод с клавиатуры, который после считывания карты отображает строку в любом выделенном текстовом поле.

Я хотел бы разделить следующее:

Трек 1: который ограничен % и ?

Трек 2: который ограничен ; и ?.

Однако не у всех карт есть обе дорожки, у некоторых есть только первая, а у некоторых только вторая.

Я хотел бы найти RegEx, который анализирует дорожку 1 и дорожку 2, если они существуют.

Вот примеры считывания карт, которые генерируют эти строки:

%12345?;54321?               (has both Track 1 & Track 2)
%1234678?                    (has only Track 1)
;98765?                      (has only Track 2)
%93857563932746584?;38475?   (has both Track 1 & Track 2)

Это пример, из которого я строю:

%([0-9]+)\?) // for first Track
;([0-9]+)\?) // for second Track

Пока вы ждете, чтобы найти RegEx... Для таких простых строк, почему бы просто не использовать substr и/или substring вместе с firstIndexOf(x) или lastIndexOf(x), где x может быть %или ? или ;... Также, если ваши "треки" численное, почему бы не извлечь путем разделения на &, а затем также удалить специальные символы (оставляет следы)?

VC.One 21.03.2019 15:45

PS: я думаю, что за вас проголосовали, потому что ваш вопрос программирования не имеет ни кодов RegEx, ни AS3. Покажите свою лучшую попытку с этим регулярным выражением, и, возможно, кто-то сможет это исправить.

VC.One 21.03.2019 15:48

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

Yozef 21.03.2019 21:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
444
1

Ответы 1

Это регулярное выражение будет соответствовать вашим группам дорожек:

/(?:%([0-9]+)\?)?(?:;([0-9]+)\?)?/g

(?:            // non-capturing group
    %          // match the % character
    (          // capturing group for the first number
        [0-9]  // match digits; could also use \d
        +      // match 1 or more digits
    )          // close the group
    \?         // match the ? character
)
?              // match 0 or 1 of the non-capturing group
(?:
    ;          // match the ; character
        [0-9]  
        +
    )
    \?
)
?

Кстати, я использовал регулярное выражение, чтобы выяснить здесь шаблоны регулярных выражений (бесплатный сайт, без принадлежности).

@Yozef На вкладке «Заменить» попробуйте следующее выражение: << $1 - $2 >>

Brian 21.03.2019 22:13

Другие вопросы по теме