/ / Що таке цей регулярний вираз шукає [closed] - php, regex, preg-match

Що таке цей регулярний вираз, який шукає [closed] - php, regex, preg-match

preg_match ("/[-_^%&().A-Z0-9]/", $file)

Погляди це, я можу побачити що кінець кінцяє нічого A-Z і 0-9, але не впевнений на початку. Тому що ^ не уникнув, тому він може бути буквальним "^" або оцінюватися на НІ, і те ж саме відбувається з ".", "(" І ")". Так що я трохи заплутався. Чи означає, що існування речей всередині необов'язкового [] означає літералізовані речі?

Відповіді:

3 для відповіді № 1

Він просто шукає один з символів у класі символів. Тобто. один з:

  • Дефіс-мінус, підкреслення, каретка, відсотки, амперсант, дужки, точка
  • Великі латинські літери
  • Арабські цифри

^ тлумачиться лише як заперечення класу символів, коли на самому початку класу. . втрачає своє особливе значення всередині характерукласів повністю. Так, так, у класах символів багато спеціальних символів регулярних виразів використовуються буквально. З винятками, хоча наступний список не є вичерпним:

  • Дефіс-мінус (-) вказує діапазон між двома іншими символами (тобто не на початку або в кінці).
  • Каретка (^), як описано вище.
  • Попередньо визначені класи символів (наприклад, w) також можна використовувати, що утворює об'єднання з персонажами цього класу. Таким чином, ваш клас символів може бути скорочений до [-^%&().w].

2 для відповіді № 2

^ має лише особливе значення всередині [] якщо це перший характер
- має лише особливе значення всередині [] якщо є між двома буквами.
., ( і ) не мають особливого значення всередині [].

Просто читання основної інформації в документи сказав би вам все це.

Вираз регулярно відповідає одному з символів класу.