Если вы хотите добавить квантификатор )(?<!\bSee\b.*)
в вид сзади, вы можете использовать модуль регулярных выражений PyPi .
(?<=\D)(?<!\bSee\b.*)Item.+?1A.+?Risk Factors(?=\D)(.+?)(?=Item 1B|$)
Демо Python
Предполагая, что **
указывает на разницу между предложениями, которые вы видите, второе соответствует из-за **
в конце.
Например
import regex
pattern = r"(?i)(?<=\D)(?<!\bSee\b.*)Item.+?1A.+?Risk Factors(?=\D)(.+?)(?=Item 1B|$)"
test_str = ("See Item 1A. Risk Factors – Regulatory, Compliance and Legal on page 13.\n"
"**Here Item 1A. Risk Factors – Regulatory, Compliance and Legal on page 13.**")
m = regex.search(pattern, test_str)
print(m.group())
Вывод
Item 1A. Risk Factors – Regulatory, Compliance and Legal on page 13.**
Другой вариант может состоять в том, чтобы соответствовать тому, что вы не хотите, и фиксировать то, что вы хотите сохранить, используя чередование.
Совпадение по всей строке, где See
предшествует Item
, и захват в группу 1 с использованием шаблона со взором позади, утверждающего не цифру.
(?:^(?:(?!\bItem\b.)*)See\b.*|((?<=\D)Item.+?1A.+?Risk Factors(?=\D).+?(?=Item 1B|$)))
Regex demo