Próbuję wyszukać struny w nawiasach za pomocą metody RE.Search. Z moich przykładów X, jestem w stanie prawidłowo znaleźć "Parkwoods", nie jestem w stanie znaleźć żadnego z innych strun.

Właśnie właśnie robiłem początkowo, dodając na białe znaki itp., Ale nadal nie jestem w stanie znaleźć dzielnicy ogrodowej, Ryersona i Regent Park / Harbourfront

match = re.search(r"\((\w+)\)", x)

Gdzie X może równać się

North York(Parkwoods)
Downtown Toronto(Garden District, Ryerson)  
Downtown Toronto(Regent Park / Harbourfront)

Jak przejść w wielu parametrach wyszukiwania do metody search? I jak mogę wyszukać slash do przodu?

0
dbosk 22 marzec 2020, 04:54

1 odpowiedź

Najlepsza odpowiedź

Wypróbuj następujący Regex:

\((\w|,| |\/)+\)

Pod względem kodu: re.search(r"\((\w|,| |\/)+\)", x)

Wyjaśnienie:

(i): Dopasuj najbardziej zewnętrzne nawiasy

() +: jeden lub więcej tego, co jest w obrębie (), używanego do wskazania "lub"

W |, | | /: Dopasuj alfa-numeryczny lub przecinek "," lub "" (przestrzeń "lub" / "(backslash, który uciekniemy jak" / ")

Spróbuj grać wokół: https://regexr.com/

Edytuj: Inne komentarze budują na zestawie negowanej [^)], ale pasuje do dowolnej postaci, a nie właściwe parenki. Możesz narzucić rygorystyczne zasady na podstawie Twojej aplikacji. Na przykład, to dopasować (&&&*$$) w centrum Toronto {X1}}, co jest czymś, co może być coś, co może chcesz.

2
ani-j 22 marzec 2020, 03:23