в регулярном выражении отсутствует выражение - PullRequest
0 голосов
/ 06 мая 2020

Из следующего текста мне просто нужно mn12, но я его не получаю. С первым выражением я получаю mn12, а также mn14. Мне просто нужно mn12.

пожалуйста, измените следующее. mn12 * операция 0010 должна быть mn14-f10

'\\b(m|s|x|p)(n|s|t)[[:alnum:]]{2}\\b')
'\\b(m|s|x|p)(n|s|t)[[:alnum:]]{2}[^-]\\b')

Пожалуйста, объясните мне, где я ошибаюсь.

Ответы [ 3 ]

1 голос
/ 06 мая 2020

Ваш [[:alnum:]]{2} не означает «любое di git, за которым следует 2». Это означает «любая последовательность из двух цифр».

Есть ли причина, по которой вы используете [: alnum:] вместо \\d?

Если вы хотите захватить mn12, но не mn14, используйте

'\\b(m|s|x|p)(n|s|t)[[:alnum:]]2\\b'
0 голосов
/ 06 мая 2020

На основании вашего комментария, если вам нужны 2 строчных символа, за которыми следуют 2 цифры, тогда это будет просто \\b[a-z]{2}\\d{2}\\b.

0 голосов
/ 06 мая 2020

Вам необходимо ограничить число c числом 1-2. Обычно [1-9] захватывает числа c от 1 до 9, поэтому в вашем случае это будет [1-2]


'\\b(m|s|x|p)(n|s|t)[1-2]{2}\\b'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...