Регулярное выражение для удаления одного ведущего «1», с более регулярным выражением после удаления - PullRequest
0 голосов
/ 18 марта 2019

Я новичок здесь.У меня есть регулярное выражение для проверки текста номерного знака:

[A-Z0-9]{6,8}

Это принимает любые строки, которые имеют 6, 7 или 8 символов, которые состоят из заглавных букв AZ или цифр 0-9.

Я хотел бы добавить что-то в начале, чтобы выбросить одну ведущую 1.Например:

оригинал 1ABC123
новый ABC123 (удалить начальный "1")

оригинал 111ABCDE
новый 11ABCDE (удалить только один«1»)

оригинал ABC1234
новый ABC1234 (без изменений)

оригинал 9876543
новый 9876543 (без изменений)

Пожалуйста, имейте в виду, что я должен сохранить часть [A-Z0-9]{6,8} после удаления начального 1, если он присутствует.

Я использую boost::regex_match в C ++ для фактической обработки регулярного выражения, если это имеет значение.

Если коротко, то сайт, который я использую для проверки, это https://regex101.com/, что немного неловко, у кого-нибудь есть альтернативные предложения для сайта проверки регулярных выражений?

1 Ответ

0 голосов
/ 18 марта 2019

Вы можете использовать дополнительный символ совпадения ?, чтобы проверить 1 в начале регулярного выражения:

1?[A-Z][0-9]{6,8}

Хотя теперь это позволяет номерным знакам иметь длину до 9 символов.Если все в порядке, вы можете затем выбросить необязательный 1 в группу без захвата, чтобы отбросить его из полученных сопоставленных групп, используя шаблон (?:blah):

(?:1?)[A-Z0-9]{6,8}

Если вы не можете иметь до 9символов в табличном номере, тогда просто есть два регулярных выражения, один с необязательным 1 и один без.Используйте символ канала | в качестве логического «или» для соответствия любому выражению:

1[A-Z0-9]{5,7}|[A-Z0-9]{6,8}

И снова, если вам нужно игнорировать 1 в выводе, поместите его в группу без захвата:

(?:1)[A-Z0-9]{5,7}|[A-Z0-9]{6,8}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...