Регулярное выражение для определенного количества цифр

#re&ex #post&resql

#регулярное выражение #post&resql

Вопрос:

Мне нужно выбрать строки из post&res, где номер детали имеет трехзначное число (300-399) в начале. Мне просто нужно совпадение / нет совпадения.

В основном я там с:

WHERE name ~ '^[A-Z]{0,5}3[0-9]{2}[^0-9]?*'

Номера деталей

  1. может содержать всего 3 цифры,
  2. может содержать до 5 символов перед числом
  3. может содержать символы после числа
  4. должно исключать 4-значные числа

Они должны совпадать:

  • 323
  • A335
  • AB359-B2
  • BB311BB

Они не должны совпадать:

  • 3234
  • A3357
  • AB3590-B

С учетом вышесказанного, передается ‘должно совпадать’, но также передаются ‘не должно совпадать’. Кажется, вопросительный знак, который проверяет наличие нецифрового ([^0-9]?), пропускает цифры, но я не могу сделать это обязательным, поскольку простой трехзначный номер детали не будет соответствовать.

Спасибо!

Комментарии:

1. ? делает ваше нецифровое выражение необязательным. Так что да.

Ответ №1:

Это регулярное выражение проходит все ваши тесты.

  '^[^d]{0,5}d{1,3}(y|[^d])'
  

Первый курсор ^ привязывается к началу.

[^d]{0,5} Допускает до пяти нецифровых символов.

d{1,3} Допускается от одного до трех символов каждой цифры.

(y|[^d]) Чередование соответствует либо нецифровому символу, либо границе слова, такой как конец строки.

Ответ №2:

Шаблон, который вы пробовали, возможно, также мог бы соответствовать первым 3 цифрам в строке с 4 цифрами, поскольку символьный класс в конце необязателен [^0-9]?

Если вы не сделаете его необязательным [^0-9] , оно не будет соответствовать только a 323 , поскольку после него ожидается символ, который является любым символом, кроме цифры.


Если после числа могут быть символы, но не цифра, вы можете использовать отрицательный прогноз (?!d) , чтобы утверждать, что справа нет цифры.

 ^[A-Z]{0,5}3[0-9]{2}(?!d)
  

Объяснение

  • ^ Начало строки
  • [A-Z]{0,5} Совпадение 0-5 раз с символом от А доЯ
  • 3[0-9]{2} Совпадение 3 и 2 цифры
  • (?!d) Отрицательный прогноз, утверждение, что то, что находится справа, не является цифрой

Демонстрация регулярного выражения | Демонстрация Post&resql