Как использовать Regex для поиска буквы, следующей за <= AAA в Python?

У меня есть следующий код

def append_letter():
  string = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'

  result = []
  # compete the pattern below
  pattern = r'(?<=AAA)\w+'
  for item in re.finditer(pattern, string):
    # identify the group number below.
    result.append(item.group(1))
  return result

Как добавить букву, не включенную в комплект Письмо

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

Как этого добиться, изменив только эту строку кода:

pattern = r'(?<=AAA)\w+'
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать re.findall с позитивным прогнозом.

>>> import re
>>> str = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'
>>> re.findall(r'.(?=AAA)', str)
['C', 'F', 'B']

Или, если вам необходимо использовать re.finditer:

>>> [match[0] for match in re.finditer(r'.(?=AAA)', str)]
['C', 'F', 'B']

Я не считаю безумием предпочитать прямоту первого.

В любом случае правильный шаблон для соответствия любому символу, за которым следует AAA:

r'.(?=AAA)'

попробуй это:

import re

def append_letter():
    string = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'

    result = []
    # Complete the pattern below
    pattern = r'(?<=AAA)\w'
    for item in re.finditer(pattern, string):
        result.append(item.group())
    return result

# Call the function and store the result
letters_following_AAA = append_letter()

# Print the result
print(letters_following_AAA)

вывод кода ["B", "C", "F"]

Мы не хотим добавлять больше скриптов из исходного кода.

Kuth 27.04.2024 07:19

Я не понимаю, вы имеете в виду, что хотите, чтобы код был короче?

Pohakoo 27.04.2024 07:21

Как я уже упоминал, я хочу изменить только строку шаблона, просто измените здесь r'(?<=AAA)\w', чтобы добавить результат в виде списка, который у нас есть, C,B,D,...

Kuth 27.04.2024 07:24

если я правильно понимаю, попробуйте следующее: r'(?<=AAA)[^A]\w+'

Pohakoo 27.04.2024 07:29

Другие вопросы по теме