Обнаружение только числа в регулярном выражении

1

У меня есть следующее регулярное выражение:

(?<!__num)10\b

и когда я хочу обнаружить 10 из следующего предложения

может быть B110\чисел и 10 чисел в этом предложении

возвращается следующее

может быть B1 10\чисел и 10 чисел в этом предложении

но я не хочу, чтобы 10 было обнаружено внутри 110, поэтому я изменил регулярное выражение на

[^\d+](?<!__num)10\b

В этом случае результат возвращается с 10, предшествующим пробельному символу.

Я хочу указать только число, указанное в регулярном выражении. Например, если я даю 110 вместо 10 в регулярном выражении, я хочу определить 110, даже если ему предшествует "B." Итак, как я могу создать регулярное выражение? Спасибо.

  • 0
    Измените (?<!__num)10\b на (?<!__num)(?<!\d)10\b (так как это python)
  • 0
    Как насчет того, чтобы попробовать \ b10 \ b? Это будет соответствовать только 10 точно
Показать ещё 4 комментария
Теги:
regex-group

1 ответ

1
Лучший ответ

Вы можете использовать

(?<!__num)(?<!\d)10(?!\d)

См. Демо-версию regex

Первые два отрицательных lookbehind будут выполняться в одном и том же месте в строке, и (?<!__num) будет убедиться, что нет __num непосредственно перед текущим местоположением и (?<!\d) будет убедиться, что цифры нет.

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

Демо-версия Python:

import re
# val = "110" # => <_sre.SRE_Match object; span=(14, 17), match='110'>
val = "10"
s = "can there be B110 numbers and 10 numbers in this sentence"
print(re.search(r'(?<!__num)(?<!\d){}(?!\d)'.format(val), s))
# => <_sre.SRE_Match object; span=(30, 32), match='10'>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню