/ / Čo hľadá tento regulárny výraz [uzavretý] - php, regex, preg-match

Čo je to regulárny výraz hľadajúci [closed] - php, regex, preg-match

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ď č. 1

Hľ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.