Ik heb een reguliere expressie als volgt:
^/[a-z0-9]+$
Dit komt overeen met tekenreeksen zoals /hello
of /hello123
.
Ik zou echter graag een aantal tekenreekswaarden willen uitsluiten, zoals /ignoreme
en /ignoreme2
.
Ik heb een paar varianten geprobeerd, maar ik krijg er geen voor elkaar!
Mijn laatste zwakke poging was
^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$
Alle hulp wordt zeer op prijs gesteld 🙂
Antwoord 1, autoriteit 100%
Hier is nog een andere manier (met behulp van een negatieve vooruitblik):
^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$
Opmerking: er is maar één vastleggingsexpressie: ([a-z0-9]+)
.
Antwoord 2, autoriteit 12%
Dit zou het moeten doen:
^/\b([a-z0-9]+)\b(?<!ignoreme|ignoreme2|ignoreme3)
Je kunt zoveel genegeerde woorden toevoegen als je wilt, hier is een eenvoudige PHP-implementatie:
$ignoredWords = array('ignoreme', 'ignoreme2', 'ignoreme...');
preg_match('~^/\b([a-z0-9]+)\b(?<!' . implode('|', array_map('preg_quote', $ignoredWords)) . ')~i', $string);
Antwoord 3, autoriteit 6%
Omdat je beide woorden wilt uitsluiten, heb je een voegwoord nodig:
^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$
Nu moeten beide omstandigheden waar zijn (noch ignoreme noch ignoreme2 is toegestaan) om een overeenkomst te hebben.
Antwoord 4
Dit sluit alle rijen met IgnoreMe uit bij zoekresultaten. Het zal ook redelijk goed werken als er een personage op een rij
^((?!ignoreme).)*$
Antwoord 5
eenvoudiger:
re.findall(r'/(?!ignoreme)(\w+)', "/hello /ignoreme and /ignoreme2 /ignoreme2M.")
u krijgt:
['hello']
Antwoord 6
Dit werkte voor mij:
^((?!\ignoreme1\b)(?!\ignoreme2\b)(?!\ignoreme3\b).)*$