2016-12-01 3 views
-1

Я новичок в регулярном выражении в довольно странной для меня ситуации. Я пытаюсь сопоставить все однозначные числа (в частности, 1-9, мне не нужен нуль), которые НЕ входят в кавычки.Используйте regex для записи чисел, только если у них нет котировок вокруг

Для примера скажем, у меня есть следующая строка: "1" or 1 ?

Мне нужно, чтобы соответствовать 1, но не "1".

Любые идеи?

ответ

1

Я объясню это в Python:

import re 
pattern = re.compile('(?<!"|\d)\d(?!"|\d)') 
print(pattern.findall('1,"2",34,5')) 
# ['1', '5'] 

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

Больше объяснения можно найти по адресу: http://www.regular-expressions.info/lookaround.html

+0

Спасибо так много! –

 Смежные вопросы

  • Нет связанных вопросов^_^