preg_match ("/[-_^%&().A-Z0-9]/", $file)
Z pohľadu toho vidím, že koniec chvostaje Anything A-Z a 0-9, ale nie je si istý na začiatok. Pretože ^ nie je uniknutý, takže by to mohlo byť doslovné „^“ alebo vyhodnotené ako NOT a to isté platí pre „.“, „(“ A „)“. Takže som trochu zmätený. Znamená to, že veci vo voliteľnom [] znamenajú veci, ktoré sú literalizované?
odpovede:
3 pre odpoveď č. 1Hľadá iba jeden zo znakov v triede znakov. Tj. jeden z:
- Spojovník mínus, podčiarkovník, zástupný znak, percentuálny podiel, ampersant, zátvorky, bodka
- Veľké latinské písmená
- Arabské číslice
^
sa interpretuje ako negovanie triedy znakov iba na samom začiatku triedy. .
stráca svoj osobitný význam vo vnútri charakterutriedy úplne. Takže áno, v triedach znakov sa doslova používa veľa špeciálnych regulárnych znakov. S výnimkou výnimiek, že nasledujúci zoznam nie je vyčerpávajúci:
- Spojovník mínus (
-
) označuje rozsah medzi dvoma ďalšími znakmi (t. j. nie na začiatku alebo na konci). - Kresba (
^
), ako je podrobne uvedené vyššie. - Preddefinované triedy znakov (napr.
w
), ktoré vytvoria spojenie so znakmi z tejto triedy. Vaša trieda postavy by sa teda mohla skrátiť[-^%&().w]
.
2 pre odpoveď č. 2
^
vo vnútri má iba špeciálny význam []
ak je to najprv charakteru.
-
vo vnútri má iba špeciálny význam []
ak je medzi dvoma doslovnými znakmi.
.
, (
a )
vo vnútri nemajú zvláštny význam []
.
Stačí si prečítať základné informácie v docs by som ti to všetko povedal.
Regex iba zodpovedá jednej zo znakov v triede.