найти регулярный экспресс в Python - PullRequest
0 голосов
/ 23 мая 2019

Я хочу найти регулярное выражение, которое соответствует шаблону типа total (10/32) в предложении.

ex) total (number/number) type

Например, file.csv содержит:

aaaaaaaaa bbbbb cccccccccc ... total (10/32) ... dddddddddd eeeeeeeeeeee.'

как печатать строки с использованием выражения regur в python?

import re 

str= df.category

items = re.findall('(total|Total)*\(\d\/\d\)', str) 
items


output []

Ответы [ 2 ]

1 голос
/ 23 мая 2019

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

[tT]otal\s*\([0-9]+/[0-9]+\)

Демо : https://regex101.com/r/Yk00r7/1/

Пример кода :

import re

inStr = 'aaaaaaaaa bbbbb cccccccccc ... total (10/32) ... dddddddddd eeeeeeeeeeee.'
print(re.findall(r'[tT]otal\s*\([0-9]+/[0-9]+\)',inStr))

Вывод:

['total (10/32)']

Примечания:

  • Всегда определяйте свой шаблон регулярного выражения как необработанную строку r'...' чтобы сохранить обратную косую черту в виде буквенных символов.
  • [tT]otal\s*\([0-9]+/[0-9]+\) будет соответствовать строкам, которые начинаются с t или T ([tT]), за которыми следует otal, за которым следуют от 0 до N пробеловсимвол (\s*), затем одно (, от 1 до N чисел ([0-9]+), косая черта, от 1 до N чисел ([0-9]+) и закрывающая скобка.
0 голосов
/ 23 мая 2019

Вы можете использовать (?i) для включения встроенного режима без учета регистра в шаблоне регулярных выражений:

import re

# example text
x = 'aaaaaaaaa bbbbb cccccccccc ... total (10/32) ... dddddddddd ToTal(1/10) eeeeeeeeeeee.'

# regex pattern
ptn = r'(?i)total\s*\(\d+/\d+\)'

# check how the pattern works
re.findall(ptn, x)
#['total (10/32)', 'ToTal(1/10)']

Где: (?mode) используется для включения перечисленных режимов (iLmsux) для всего регулярного выражения. например, вы можете добавить (?ism)some_pattern, чтобы включить режимы ignore-case, dotall и multiline для some_pattern.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...