/ / RegEx Filtr dla popularnych słów - regex, python-3.x

Filtr RegEx dla popularnych słów - regex, python-3.x

Próbuję usunąć pospolite słowa (spójniki,przysłówki, zaimki, itp.) z bloku tekstu. Używam wyrażenia regularnego, ale z jakiegoś powodu niektóre popularne słowa znajdujące się w moim filtrze nie zostaną odfiltrowane.

Niektóre przykłady słów nie są filtrowane: "havent", "why", "should"

Jakieś pomysły, dlaczego?

 splitResult = s.split()
p = re.compile(
"""^(&|also|a|about|again|all|after|are(nt)?|arent|as|an(y)?|at|
bcuz|before|be(low)?|between|bring|but|by|and|can(not)?|close(d)?|could(nt)?|
cuz|do(nt)?|down|decide(d)?|decision|on(to)?|or|of|our|over|out|have(nt)?|he(re)?|
her|his|other(s)?|even|got(ten)?|for|from|get(s)?|got(ten)?|has(nt)?|havent|he(s)?|
him|his|if|in|to|in(to)?|is(nt)?||make|me|once|play(ed)?|role|say(s)?|seen|she(s)?|
should(nt)?|stop(ped)?|time|my|no(t)?|must(nt)?|now|you(re)?|your|want|want(ed)?|
watch(ed)?|way|we(re)?|will|with||i|a|is(nt)?|just|would(nt)?|before|that|the(re)?|
their|them|they|this|turn|when|at|how|it(s)?|which|who|after|then|if|how|because|know(s)?|
yet|[A-Za-z]{1,2}|http(s)?://.*|www..*)$""",re.I)

for word in splitResult:
m = p.findall(word)
if not m:
word = "".join(c for c in word if c not in ("?", ".", "!", """, ",",""","(",")"))
wordsList.insert(ctr,word)

Odpowiedzi:

0 dla odpowiedzi № 1

Wygląda na to, że twój wzór stał się tak duży, że nie jesteś w stanie nim zarządzać.

Twój wzór nie pasuje, gdy są białe znaki lub apostrofy.

Nie ma tego powodu havent i should nie będzie filtrować, w przeciwnym razie. Bez więcej kodu, nikt nie wie.

(Poniżej znajduje się błąd w regex101.com, ale mimo to należy poprawić odpowiednio wyrażenie regularne).

Według regex101.com są dwa z następujących błędów:

| Alternator w tej pozycji skutecznie skraca grupę, czyniąc wszelkie inne żetony poza tym punktem bezużytecznymi

Oznacza to, że są ||w zasadzie w twoim kodzie.

Uwaga: Jeśli chcesz dopasować nicość (odpowiednik pustego łańcucha), nie powinno być później zmian, ponieważ ten silnik wyrażeń pasuje do najwcześniejszej możliwej alternacji.

Tutaj są:

  • ||make
  • |with||i

(Znaleziono z wyrażeniem regularnym: ||)