Python 3 Regex - извлечение неизвестной подстроки из предложения с неизвестным интервалом между строками - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь извлечь неизвестную подстроку между двумя подстроками в предложении, которое имеет стандартный дизайн.

Примеры:

object Ball is located in row 8
objectballisLocatedINROw8
objectChairislocated in row 4
    object CupboardisLocated in row 22

В приведенных выше предложениях следуйте определенным c шаблон, как показано ниже:

object<optional spacing>item-name<optional spacing>is<optional spacing>located<optional spacing>in<optional spacing>row<optional spacing>some integer

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

Моя цель:

Извлечь item-name, где item-name может быть любой неизвестной строкой в ​​неизвестном случае (верхний, нижний, смесь обоих)

Что я пробовал?

import re

task = "objectChairislocatedinrow8"
object = re.search(r'(\s)*object(\s)*[a-z]*(\s)*is(\s)*located(\s)*in(\s)*row(\s)*\d+(\s)*', 
task, re.IGNORECASE)

print(object)

1 Ответ

1 голос
/ 29 января 2020

Regex : '^ *object *([A-Za-z]+) *is.*'

Соответствует словам с прописными и строчными буквами. Это также работает, если в середине слова «есть», например, this или paris Скобки вокруг [A-Za-z] + выберите эту группу, чтобы она могла быть используется позже.

import re

task = "objectChairislocatedinrow8"
object = re.search(r'^ *object *([A-Za-z]+) *is.*', 
task, re.IGNORECASE)

print(object.group(1))

вывод:

Chair
...