Potrzebuję pomocy w RegExp


(sexy69bis) #1

Chcę w słowniku znaleźć wyrazy zaczynające się z dużej litery
np takie jak:

Ząbek
Żabka
Żłobek
Żrący

Jakie powinno być polecenie w RegExp?
już mam \b[A-Z]|[ĄĆĘŁŃÓŚŹŻ]


(krystian3w) #2

https://regex101.com/r/xAfZqE/1

            https://regex101.com/r/xAfZqE/2
\b[A-ZĄĆĘŁŃÓŚŹŻ][a-ząćęłńóśźż]+
 
\b[A-Ż][a-ż]+

W notepad++ oba znajdują po 4 wyrazy (może trochę głupieją w innych językach niż PHP).


Widać to drugie nie może działać.


(sexy69bis) #3

to: \b[A-Ż][a-ż]+
zaznacza również np. wieża http


(sexy69bis) #4

a jak ma wyglądać polecenie dla wyrazów
zaczynających się z dużej litery,
cz w środku
i nie może kończyć się na “a”.

np. Podręcznik

a Paczka już nie.

PS. używam edytor AkelPad, ale to chyba nie ma znaczenia.


(krystian3w) #6

https://regex101.com/r/HrBHpF/2/

\b[A-ZĄĆĘŁŃÓŚŹŻ][a-ząćęłńóśźż]+[^a\s]\b

https://regex101.com/r/HrBHpF/3/

\b[A-ZĄĆĘŁŃÓŚŹŻ][a-ząćęłńóśźż]+[b-ząćęłńóśźż]\b

(sexy69bis) #7

Paczka jest pomijana. OK
ale, to też zaznacza chociaż nie ma “cz”

Wisząc
Zaszyć
Żłobiąc
Żółw


(krystian3w) #8

https://regex101.com/r/1EjHjM/5

\b[A-Ż]*cz[a-ż]*[^a\s]\b

Teraz działa mi wykluczanie AkelPad (bardzo ciekawe) - widać składni poprzedniej nie tolerował chyba wtedy jeszcze nie przestawiłem by szukał od nowa (początku pliku / wprowadzonego tekstu).


https://regex101.com/r/1EjHjM/6

\b[A-Ż]*cz[a-ż]*[b-ż]\b

(sexy69bis) #9

zaznacza również z małej litery:
początek
kończy
+++++++++++++++++
te powinno zaznaczyć:
Początek
Podręcznik
Żaczek

a te już nie:
kończy
początek
podręcznik

paczka
Paczka
żaczek
żaczka
Żaczka


(krystian3w) #10

https://regex101.com/r/IgJNni/4

\b([A-ZĄĆĘŁŃÓŚŹŻ]+[a-ząćęłńóśźż]*)(cz)([a-ząćęłńóśźż]*[^a\s])\b

https://regex101.com/r/BUsRNX/4

\b[A-ZĄĆĘŁŃÓŚŹŻ]+[a-ząćęłńóśźż]*(cz)[a-ząćęłńóśźż]*[b-ząćęłńóśźż]\b

Poprawka #3 bo nie znajdowało “Podręcznikówę” (chodziarz to wyraz z błędem).


(sexy69bis) #11

Dzięki, oba polecenia są dobre.
Nie idzie je złamać :slight_smile:
jedynie tylko znaki plus można wyeliminować.

PS a te zz w poleceniu musi być?


(krystian3w) #12

Nie musi - koślawe kopiowanie po odkryciu że zakresy Ą-Ź / ą-ż są za szerokie.


(sexy69bis) #13

Mam banalny problem.
Jak wynajdywać wszystkie wyrazy składające się z 2 lub jednej litery?


(krystian3w) #14

https://regex101.com/r/KjF19B/3

(\b[A-Za-z][A-Za-z]\b)|(\b[A-Za-z]\b)

regex

Rozszerzyć o polskie znaki też można by znajdowało “ją” / “są” itd. - na razie tego nie dopracowałem.
A przynajmniej by nie zaznaczało z takiego wyrazu pierwszej litery.


(sexy69bis) #15

(^[A-ZĄĆĘŁŃÓŚŹŻ][a-ząćęłńóśźż]\b)|(^[A-ZĄĆĘŁŃÓŚŹŻ]\b)

chyba to działa, dzięki
http://regexstorm.net/tester
ś
śą
śa
łam
Ż
ż
ńa
ńą
Ćm
Ćma