Regex Позитивный Lookahead все еще включает выражение в результате - PullRequest
0 голосов
/ 21 апреля 2020

Это мое выражение регулярного выражения.

'(?<=1\)).*'

Я пытаюсь найти соответствие

Хорошая стратегия - это набор действий, которые позволяют фирме достичь своих внутренних целей без учета внешней среды.

Но он продолжает возвращаться с 1) , который я не хочу, чтобы это нравилось.

1 ) Хорошая стратегия - это набор действий, которые позволяют фирме достичь своих внутренних целей без учета внешней среды.

Как мне только вернуть вопрос?

РЕДАКТИРОВАТЬ : Так как моя ошибка не может быть воспроизведена, я делюсь полным кодом.

searchCounter = 1

bookDict = {}

with open ('StratMasterKey.txt', 'rt') as myfile:

for line in myfile:
    question_pattern = re.compile((rf'(?<={searchCounter}\)).*'), re.IGNORECASE)
    if question_pattern.search(line) != None: 

        bookDict[searchCounter] = line 
        searchCounter +=1

1 Ответ

1 голос
/ 21 апреля 2020

Ваше регулярное выражение в порядке и соответствует правильному. Проблема в том, что после того, как вы проверите его на соответствие, вы используете исходную строку вместо соответствующей части. Сделайте это вместо:

searchCounter = 1

bookDict = {}

with open ('StratMasterKey.txt', 'rt') as myfile:

for line in myfile:
    question_pattern = re.compile((rf'(?<={searchCounter}\)).*'), re.IGNORECASE)
    result = question_pattern.search(line)
    if result != None: 

        bookDict[searchCounter] = result[0] 
        searchCounter +=1
...