Chciałbym znaleźć pozycję łańcucha (Test) ciąg z poniższego ciągu (ten, który nie zaczyna się od lub lub):

 •  <test>* (for test) (or test) (test)

Czy można znaleźć konkretny ciąg przy użyciu negatywnego wyglądu twierdzenia? Używałem tego REGEX, ale czegoś brakuje:

m_comments = re.search('(?<!\(for)|(?<!\(or)', line)

Czy możemy również połączyć lub oświadczenie w spojrzeniu za twierdzeniem?

Uwaga: Test może być dowolny możliwy ciąg:

<an other eg> (for another test) (or with this) (anything)
0
tiguero 4 wrzesień 2012, 13:42

2 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego

\((?!for|or).*?\)

Zobacz to Tutaj na Regexr

Z \(.*?\) pasuję do wszystkiego od wspornika otwierającego do pierwszego wspornika zamykającego.

Następnie używam negatywnego lookhead (?!for|or), aby zapewnić, że nie ma "dla" dla "i nie" lub "bezpośrednio po wsporniku otwarcia.

W potwierdzeniu w Pythonie nie można używać alteracji. Muszą mieć stałą długość.

5
stema 4 wrzesień 2012, 10:04

Myślę, że chcesz użyć metody łańcucha find, a nie regex:

string_to_look_up.find('(test)')
0
Andy Hayden 4 wrzesień 2012, 09:55