Sponzorované odkazy:


Diskuse i na konci stranky FACEBOOK bez nutnosti registrace v tomto foru

Regulérní výrazy regex nápady a šablony

Regulérní výrazy regex nápady a šablony

Příspěvekod AdminNovy » sob dub 06, 2019 9:05 pm

regex for matching something if it is not preceded by something else
REGEX bude před použitím zřejmě nutno vložit mezi lomítka např. /regex/
Za ukončovací lomítka se dávají značky "flags" např. g - globální atd. viz v příspěvcích níže.

Kód: Vybrat vše
(?<!Math)\.round

najde .round jen když není před ním Math
OK
a.round
c.round
NOT Math.round

regex if not followed by something
Kód: Vybrat vše
Math(?!\.round)

Vybere Math , za kterým NEnásleduje .round
OK
Math.pow, Math.cos
NOT
Math.round

Výše uvedené REGEX jsou vhodné například při hledání v souborech, kdy hledáme nějakou funkci stejného názvu, která není, nebo je přidružena např. k Math
AdminNovy
Site Admin
 
Příspěvky: 751
Registrován: stř lis 02, 2011 10:07 am

Re: Regulérní výrazy regex nápady a šablony

Příspěvekod AdminNovy » čtv dub 11, 2019 7:35 am

AdminNovy
Site Admin
 
Příspěvky: 751
Registrován: stř lis 02, 2011 10:07 am

Re: Regulérní výrazy regex nápady a šablony

Příspěvekod AdminNovy » čtv dub 11, 2019 9:12 am

Jeden znak: a, b nebo c [abc] [abc]a bb ccc
Znak kromě: a, b nebo c [^abc] [^abc]d, ff, mmm ale ne a, bb, ccc
Znak od až po: a-z [a-z] [a-z]jez, mez, bez ale ne keřík - neumí diakritiku
Znak není v rozsahu: a-z [^a-z] vybere prázdné mezery i pismena s diakritikou
Znak v rozsahu: a-z nebo A-Z [a-zA-Z] neumí diakritiku
Jakýkoliv jednotlivý znak . bere vše i diakritiku, kromě znaku konce řádku
Znak mezery \s ^\r\n\t\f\v a mezery
Znak není mezera \S vše kromě mezer viz výš
Číslice \d pouze číslice
Libovolné jiné než číslice \D vše výjma číslic
Jakýkoliv znak písmena \w \w+celá slova pokud neobsahují diakritku či nepísmena
Jakýkoli znak jiný než písmeno \W \W+*-+#@ ale ne _ podtržítko
Vše co bude v závorce (group) (...) (he)všechna he ze slov
Buď a nebo b (a|b) (a|b)vybere vešechna a i b ze slov
Nula nebo jeden znak a a? bao?bao , ba, ale ne samotne b
Nula nebo více a* bao*ba, bao ale ne b, bax, bac
Jeden nebo více a+ a až nekonečno aaaa i a uprostřed slova
Přesně 3 znaky a a{3} aaa aaaa jen první 3 znaky, ale ne aa
3 nebo více znaků a a{3,} aaa až nekonečno aaaaaaaa
Mezi 3 a 6 znaky a a{3,6} aaa aaaaaa ale ne aa
Začátek řetězce ^ ^\w+např. slovo je začátek nového řádku
Konec řetězce $ \w+$(veme konci) poslední slovo na konci
Hranice slova \b d\b(veme d na konci slov) hrad led
Není hranice slova \B a\Ba v ab, ale ne v ba
Nový řádek \n \r\n?|\ncross platform newline / nalezne nový řádek napříč platformami
Tab - tabulátor \t
Carriage return CR \r návrat vozíku https://cs.wikipedia.org/wiki/Carriage_return
AdminNovy
Site Admin
 
Příspěvky: 751
Registrován: stř lis 02, 2011 10:07 am

Re: Regulérní výrazy flags - modifiers

Příspěvekod AdminNovy » pon dub 15, 2019 7:12 am

gGlobal / najde všechny, nezastaví se po prvním nálezu
mMultiline / prohledá i v dalších řádcích
iCase insensitive / citlivý na velikost písmen
xIgnore whitespace / ignoruje všechny mezery a umožňuje vložení komentáře do regexu. Komentáře jsou označeny znakem "#". Pokud potřebujete zahrnout znak mezery ve vašem regexu musíte jej označit '\ '
sSingle line
uUnicode / \w+ již pak vybere celé slovo i když obsahuje například českou dikakritiku
XeXtended
UUngreedy / např. a+ vybere jen první a z aaaaaa
AAnchor / např. a+ označí první výskyt a a všechny další a pokud jej následují holaaaahou už ne aaa
JDuplicate group names / regex může mít duplicitní názvy vzorů, ale každá skupina vyhledání má stále své vlastní ID. Npř. /(?<letter>a)(?<letter>b)/J Tyto dvě skupiny produkují vlastní zápas namísto jedné kombinované skupiny. ab bude rozděleno do dvou skupin. Full match bude ab
AdminNovy
Site Admin
 
Příspěvky: 751
Registrován: stř lis 02, 2011 10:07 am


Zpět na PHP

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

%2F%2Fdum-zahrada.okhelp.cz%2Fforum%2Fviewtopic.php%3Ff%3D76%26t%3D1985%26p%3D2315 link
cron