Obecnie programuję algorytm słownictwa, który sprawdza, czy użytkownik wpisał słowo poprawnie. Mam następującą sytuację: Prawidłowym rozwiązaniem dla tego słowa byłoby „część 1, część 2”. Użytkownik powinien być w stanie wpisać „część 1” (odpowiedź 1), „część 2” (odpowiedź 2) lub „część 1, część 2” (odpowiedź 3). Teraz próbuję dopasować ciąg podany przez użytkownika do następującego, automatycznie utworzonego wyrażenia regularnego:
^(part1|part2)$
To zwraca tylko odpowiedź 1 i 2 jako poprawną, podczas gdy odpowiedź 3 byłaby błędna. Zastanawiam się teraz, czy istnieje operator podobny do | to mówi and/or
zamiast either...or
.
Czy ktoś może mi pomóc rozwiązać ten problem?
$or
wyrażenia regularnego mongodbOdpowiedzi:
Zakładam, że chcesz dynamicznie budować wyrażenie regularne tak, aby zawierało inne słowa niż część 1 i część 2, i że porządek nie ma znaczenia. Jeśli tak, możesz użyć czegoś takiego:
Pozytywne dopasowania:
Negatywne dopasowania:
źródło
Czy to działa?
źródło
Czy to działa bez zmian?
a dlaczego nie to?
Pierwszy działa dla wszystkich warunków, drugi dla wszystkich oprócz
part2
(przy użyciu GNU sed 4.1.5)źródło
Nie jest ekspertem od wyrażeń regularnych, ale możesz to zrobić
^((part1|part2)|(part1, part2))$
. Innymi słowy: „część 1 lub część 2 lub obie”źródło
Lub możesz użyć tego:
źródło