Считыватель карт — это просто ввод с клавиатуры, который после считывания карты отображает строку в любом выделенном текстовом поле.
Я хотел бы разделить следующее:
Трек 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
PS: я думаю, что за вас проголосовали, потому что ваш вопрос программирования не имеет ни кодов RegEx, ни AS3. Покажите свою лучшую попытку с этим регулярным выражением, и, возможно, кто-то сможет это исправить.
Я использовал поиск по индексу разделителей и подстроку индексов, однако это не сработало для всех моих случаев использования.





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