Регулярное выражение для поиска и удаления подстроки или ее вариантов из строки - PullRequest
1 голос
/ 02 мая 2019

У меня есть текст типа:

  • «Выбранные значения: вариант 1, или вариант 2, или вариант 3»
  • «Выбранное значение: вариант 1, или вариант 2, или вариант 3»
  • "Выбранное значение = Опция 1, или Опция 2, или Опция 3"

Мне нужно извлечь все, что находится после : или =

Я пытался пойти по этому пути:

import regex as re
r = re.compile(r'Choice(.+?)selected')
r.split(str)

Я не знаю, как захватить : или =

Ответы [ 2 ]

4 голосов
/ 02 мая 2019

Вам не нужно использовать регулярное выражение, просто используйте re.split для разделения на : и =

li = ["Choice values selected: Option 1, or Option 2, or Option 3", "Choice value selected: Option 1, or Option 2, or Option 3",
      "Choice value selected = Option 1 , or Option 2, or Option 3"]

import re
for item in li:
    #Split on : and =, get the last element from list and strip it
    print(re.split(':|=',item)[1].strip())

Выход будет

Option 1, or Option 2, or Option 3
Option 1, or Option 2, or Option 3
Option 1 , or Option 2, or Option 3
1 голос
/ 02 мая 2019

Вы можете использовать это регулярное выражение,

[:=]\s*(.*)

И получить свое значение от group1

Это регулярное выражение начинается с захвата либо : или =, а затем при необходимости \s* совпаденийнеобязательный пробел, а затем (.*) захватывает оставшийся текст в строке и захватывает в group1

Regex Demo

код Python,

import regex as re

arr = ['Choice values selected: Option 1, or Option 2, or Option 3','Choice value selected: Option 1, or Option 2, or Option 3','Choice value selected = Option 1 , or Option 2, or Option 3']

for s in arr:
 m = re.search(r'[:=]\s*(.*)', s)
 if m:
  print(s, '-->', m.group(1))

Output,

Choice values selected: Option 1, or Option 2, or Option 3 --> Option 1, or Option 2, or Option 3
Choice value selected: Option 1, or Option 2, or Option 3 --> Option 1, or Option 2, or Option 3
Choice value selected = Option 1 , or Option 2, or Option 3 --> Option 1 , or Option 2, or Option 3

Кроме того, если вы хотите использовать re.split, вы можете разделить его, используя [=:] regex, которое представляет либо =, либо :

import regex as re
arr = ['Choice values selected: Option 1, or Option 2, or Option 3','Choice value selected: Option 1, or Option 2, or Option 3','Choice value selected = Option 1 , or Option 2, or Option 3']

for s in arr:
 r = re.compile(r'[:=]')
 print(r.split(s)[1])

Выход,

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