2013-05-14 19 views
5

Czy istnieje prosty sposób ignorowania/pominięcia niektórych liter. Problem polega na znalezieniu słowa składającego się z 5 liter, ale nie zawierającego liter b, j, m lub n.wyrażeń regularnych brakuje niektórych liter

Czy mogę po prostu podać tylko te litery, które chcę, takie jak [a] [c-i] [k-l] [o-2]? To nie wydaje się być bardzo czyste i nadal muszę określić, że słowo ma mieć 5 liter. Sądzę, że potrzebuję a/w i {5}, ale nie jestem pewien, jak to wszystko połączyć. Dzięki.

Odpowiedz

10

Wybiera wszystkie znaki oprócz bjmn:

[^bjmn]{5} 

Jeśli chcesz tylko małe litery litery z wyjątkiem tych, które wymieniono:

[c-ik-lo-za]{5} 

Jeśli nie chcesz 5-literowym słowa które są częścią dłuższych wyrazów, dodaj kontrolę granic słów:

\b[c-ik-lo-za]{5}\b 
+2

PO chce tylko '' bjmn' letters' wyjątkiem, a nie jakiegokolwiek charakteru z tego co rozumiem. – Dogbert

+0

OP chce również tylko słów o długości 5 liter, będzie to również pasować do słów takich jak "aduou" w "baduouwwen" –

0

Zamiast [a][c-i][k-l][o-2], spróbuj [ac-ik-lo-z]{5}, który powinien wykryć ciągi pięciu dozwolonych liter.

EDYCJA: Ups, konkretnie chciałeś słów. Po prostu przetestuj granice słów po obu stronach, a następnie: \b[ac-ik-lo-z]{5}\b - sprawdzenie spacji sprawi, że przegapisz mecz, jeśli jest on ostatni na linii i ma okres po nim, przecinek po nim, jest w nawiasach, itp.

+0

Jak wspomniano również w przypadku davide, jeśli zależy Ci na rozróżnianiu wielkości liter, możesz wyraźnie zezwolić lub odrzucić wersje kapitałowe lub po prostu użyj flagi, aby uczynić wyrażenie regex niewrażliwym na wielkość liter. – Mike

0

Użyj [^ bjmn] lub [^ BbJjMmNn], jeśli nie chcesz również wielkich liter.

+2

OP chce tylko litery oprócz bjmn, a nie jakiejkolwiek postaci z tego, co rozumiem. – Dogbert

0

Spróbuj \W[ac-ik-lo-z]{5}\W (to pasuje spacje po obu stronach grupy pięciu znaków, które nie zawierają te, których szukaliśmy.

Można połączyć kilka zakresów w jednej listy, jak wyżej.

+0

Zamień \ W na \ b, aby przetestować granice słów w ogóle. Na przykład, co jeśli słowo jest ostatnim na linii i ma okres po nim, lub przecinek? – Mike

0

wymaga to słowo ma 5 liter ale nie obejmują żadnej z bjmn. To może być uproszczony za pomocą list rozciąga jak [AC-I], ale te wydają się być trochę mylące, gdy próbuje odczytać.

\b([acdefghiklopqrstuvwxyz]{5})\b

enter image description here

enter image description here

Powiązane problemy