2016-02-09 2 views
2

Я занимаюсь домашним заданием по регулярному выражению и испытываю трудности с OR. Учитывая следующие строки:Каков наилучший способ использования OR в regex python

avc7fsrd5vcc12vfscsrwt1qw7eetrs&fsrsy 

должны возвращать t1 s

fdjhads jhf&5672t3zcxvb,m654godjhfjdyeuyr123jfjjdjfjdfj77djsfhdjhfdsf99 

должен возвращать t3 идти 123 77

Первая часть является извлечение т с некоторое число, а затем извлечь s или пойти в зависимости от того, что на первом месте. Если это произойдет, тогда нам нужно извлечь два числа после этого, иначе остановитесь.

Это регулярное выражение я использую

'(t[0-9]).*?(go).*?([0-9]+).*?([0-9]+)|(t[0-9]).*?(s)' 

, но она не работает, когда я добавляю с до второй строки и экстракты идут вместо с.

Любая помощь будет оценена по достоинству.

+0

' то нам нужно извлечь два числа после 'после _what_? – sln

+0

Для второго образца 't3 ... go ... 123 ... 77', потому что 654 перед' go' – sln

+0

Извините, ваше право! – Anonymous

ответ

1

Его довольно простой. Первое чередование имеет приоритет над вторым.
Перед тем, как идти, убедитесь, что нет s.

(t[0-9])[^s]*?(go).*?([0-9]+).*?([0-9]+)|(t[0-9]).*?(s)

Formatted and tested:

(t [0-9])     # (1) 
    [^s]*? 
    (go)      # (2) 
    .*? 
    ([0-9]+)     # (3) 
    .*? 
    ([0-9]+)     # (4) 
| 
    (t [0-9])     # (5) 
    .*? 
    (s)       # (6) 
+0

Спасибо за помощь. Я довольно новичок в регулярном выражении. Действительно ценю это. – Anonymous

+0

Удачи вам! – sln

1

Читайте о regex здесь:

print re.findall(r'(t\d+).*?(s|go)\D*(\d*)\D*(\d*)', s) 

Выход:

[('t3', 'go', '123', '77')] 
1

I подумайте, что это необходимое вам регулярное выражение:

     (t\d+).*?(go|s)\D*?(\d*)\D*?(\d*) 

Он работает согласно вашему требованию, если я правильно понял вопрос.

Demo для 1-й матч: http://regexr.com/3coi0

Demo для 2-й матч : http://regexr.com/3coht

Для получения дополнительной помощи в понимании заранее регулярное выражение, я бы передать Вам читать https://www.talentcookie.com/2015/07/lets-practice-regular-expression https://www.talentcookie.com/2016/01/some-useful-regular-expression-terminologies/

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