Использование регулярного выражения для извлечения холдинговой компании - PullRequest
0 голосов
/ 05 августа 2020

Дана строка, которая следует за структурой как-

" (subsidiary of <holding_company>) <post_>"

, где

  • holding_company может содержать алфавиты и некоторые специальные символы, включая скобки
  • post_ может содержать любой символ.

Пример строки: "google (дочерний элемент алфавита (в c.)) Xyz"

Как извлечь название холдинговой компании с помощью регулярного выражения?

Ответы [ 3 ]

2 голосов
/ 05 августа 2020

Регулярное выражение, которое нужно извлечь, выглядит следующим образом:

"subsidiary of\s+(.*)\)\s+\S+"

В коде Python2 вы должны сделать что-то вроде:

import re
regex = r"subsidiary of\s+(.*)\)\s+\S+"
test_str = "\" (subsidiary of <holding_company>) <post_>\""

m = re.search(regex, test_str)

if m:
  # if it found the pattern, the company name is in group(1)
  print m.group(1)

Посмотрите, как это работает здесь: https://repl.it/repls/ShyFocusedInstructions#main .py

1 голос
/ 05 августа 2020

Это создает группы захвата для вашей холдинговой компании и почты. Возможно, вам потребуется расширить регулярное выражение, чтобы включить дополнительные специальные символы. Вот регулярное выражение на regex101, если вам нужно его расширить https://regex101.com/r/xpVfqU/1

#!/usr/bin/python3

import re

str=" (subsidiary of <holding_company>) <post_>"

holding_company=re.sub(r'\s\(subsidiary\ of\ ([\w<>]*)\)\s*(.*)', '\\1', str)
post=re.sub(r'\s\(subsidiary\ of\ ([\w<>]*)\)\s*(.*)', '\\2', str)

print(holding_company)
print(post)
1 голос
/ 05 августа 2020

Вот что вам нужно:

(?<=\(subsidiary of)(.*)(?=\) )
...