Regex: Как получить все в скобках перед определенным персонажем? - PullRequest
0 голосов
/ 31 января 2019

Как бы я вернул строку в скобках после определенного символа?Меня интересует строка перед |#| в скобках ().Учитывая две строки:

s1 = 'This is the part of the string not of interest LEMB(INTEREST)|#|IND'
s2 = 'someotherstring(NOT_OF_INTEREST)

Я пытался с этим регулярным выражением

pattern = r'(?=\#\|IND)\((.*?)\)'
results = re.findall(pattern,s1)
results[0][0]

должен вернуть

'INTEREST'

, в то время как results = re.findall(pattern,s2) ничего не должен возвращать.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Одним из вариантов может быть сопоставление первой части, а затем использование группы захвата для захвата того, что находится между скобками.Затем убедитесь, что следующим образом является |#|IND

\(([^()]+)\).*?\|#\|IND

Это будет соответствовать

  • \( Match (
  • ([^()]+) Захват в группе соответствияне ( или )
  • \) Соответствие)
  • .*? Если после последней закрывающей скобки может быть что-либо, сопоставьте это
  • \|#\|INDMatch | # | IND

Regex demo | Python demo

Если последняя часть должна быть сразу после закрывающей скобки, используйте

\(([^()]+)\)\|#\|IND
0 голосов
/ 31 января 2019

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

(?<=\()[^)]*(?=\)\|#\|)

Объяснение:

  • (?<=\() - этот положительный взгляд гарантирует, что данным предшествует литерал(
  • [^)]* - Захватывает интересующие вас данные
  • (?=\)\|#\|) - Позитивный взгляд в будущее, чтобы убедиться, что за ним следует закрывающий ) и буквальный |#|

Демо

Образцы кодов Python,

import re

arr = ['This is the part of the string not of interest LEMB(INTEREST)|#|IND','someotherstring(NOT_OF_INTEREST)']

for s in arr:
 m = re.search(r'(?<=\()[^)]*(?=\)\|#\|)',s)
 if (m):
  print(s,' --> ',m.group())
 else:
  print(s,' --> No Match')

Отпечатки,

This is the part of the string not of interest LEMB(INTEREST)|#|IND  -->  INTEREST
someotherstring(NOT_OF_INTEREST)  --> No Match
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...