Как получить всю строку от запятой до следующей запятой или новой строки, когда в строке встречается символ "/"

python regex

40 просмотра

3 ответа

6 Репутация автора

У меня есть строка в формате

,xys=2/3,
d=e,
b*y,
b/e

Я хочу получить xys=2/3и b/e.

Прямо сейчас у меня есть регулярное выражение, которое просто выбирает 2/3и b/e.

 pattern = r'(\S+)\s*(?<![;|<|#])/\s*(\S+)'
 regex = re.compile(pattern,re.DOTALL)
 for result in regex.findall(data):
     f.write("Division   " + str(result)+ "\n\n\n") 

Как я могу изменить, чтобы выбрать то, что я собираюсь сделать?

Автор: pythonlearner111 Источник Размещён: 19.07.2016 07:00

Ответы (3)


0 плюса

0 Репутация автора

Нет необходимости в регулярных выражениях.

s = """,xys=2/3,
d=e,
b*y,
b/e
"""
l = s.split("\n")

for line in l:
    if '/' in line:
        print(line.strip(","))
Автор: user5547025 Размещён: 19.07.2016 07:06

1 плюс

22110 Репутация автора

  • Совпадение с чем угодно, кроме ,(или символом новой строки) вплоть до первого слеша /:[^,/\n]*/
  • Сопоставьте оставшийся текст до следующей запятой: [^,\n]*
  • Положите два вместе: [^,/\n]*/[^,\n]*
Автор: Aran-Fey Размещён: 19.07.2016 07:17

0 плюса

1694 Репутация автора

Будет ли это работать:

x.split(",")[1].split('\n')[0] if "," in x[:-1] else None

Он игнорирует (оценивает None), если unle ,присутствует в не последней позиции, иначе извлекает часть между ,и другим ,или до конца, и снова фильтрует до новой строки, если таковая имеется.

Автор: DurgaDatta Размещён: 19.07.2016 07:42
Вопросы из категории :
32x32