Еще один вопрос RegEX о сопоставлении и игнорировании пробелов - PullRequest
1 голос
/ 18 октября 2019

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

Мне нужно взять строку 'PAB 123 456' и вернуть токен 'AB123456'.

Справочная информация: У меня есть приложение, которое сопоставляет продукты через штрих-коды / QR-коды. Приложение читает два кода и пытается определить, совпадают ли они. Это приложение типа контроля качества, написанное на .net

. Используется два RegEx, сравнивается первое совпадение с каждым RegEx. Если они одинаковы ... успехов! Существует довольно много таких пар RegEx, которые соответствуют различным комбинациям, и приложение просто пытается каждую пару по очереди.

Итак, используя регулярное выражение типа '(? <= P) ([0-9A-Z]+) 'в строке типа' PAB123456 'это соответствует и возвращает' AB123456 'в качестве первого токена. </p>

Использование второго регулярного выражения' (? <= P) ([0-9A-Z] +) 'в строке типа '[) -071J 2P 1T PAB123456' совпадает и возвращает 'AB123456' </p>

Таким образом, обе совпадающие строки одинаковы .. success.

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

Проблема: Мне нужно взять 'PAB 123 456' и вернуть токен 'AB123456'. Для этого мне нужно удалить пробелы во всем после ^ P, совпадая с [0-9A-Z] после удаления.

Я полагаю, что может быть другой случай, когда у меня есть текст вроде '[) -071J2P 1T PAB-123-456 ', где я должен найти' P 'и затем удалить тире, а затем сопоставить в следующем.

Что не удалось: Просто сопоставление [0-9A-Z] пробел [0-9A-Z] пробел [0-9A-Z] пробел не будет работать, так как первый возвращаемый токен будет включать пробелы. Я попытался сделать упреждающий просмотр и удалить пробелы, но не смог получить правильный синтаксис, я также попытался выработать синтаксис для сопоставления и удаления пробелов, но снова не смог получить правильный синтаксис.

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете использовать что-то вроде:

P(AB)[ -]*(\d+)[ -]*(\d+)

и затем ссылки $1, $2 и $3.

https://regexr.com/4n4ma

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...