preg_match ("/[-_^%&().A-Z0-9]/", $file)
Погляди це, я можу побачити що кінець кінцяє нічого A-Z і 0-9, але не впевнений на початку. Тому що ^ не уникнув, тому він може бути буквальним "^" або оцінюватися на НІ, і те ж саме відбувається з ".", "(" І ")". Так що я трохи заплутався. Чи означає, що існування речей всередині необов'язкового [] означає літералізовані речі?
Відповіді:
3 для відповіді № 1Він просто шукає один з символів у класі символів. Тобто. один з:
- Дефіс-мінус, підкреслення, каретка, відсотки, амперсант, дужки, точка
- Великі латинські літери
- Арабські цифри
^
тлумачиться лише як заперечення класу символів, коли на самому початку класу. .
втрачає своє особливе значення всередині характерукласів повністю. Так, так, у класах символів багато спеціальних символів регулярних виразів використовуються буквально. З винятками, хоча наступний список не є вичерпним:
- Дефіс-мінус (
-
) вказує діапазон між двома іншими символами (тобто не на початку або в кінці). - Каретка (
^
), як описано вище. - Попередньо визначені класи символів (наприклад,
w
) також можна використовувати, що утворює об'єднання з персонажами цього класу. Таким чином, ваш клас символів може бути скорочений до[-^%&().w]
.
2 для відповіді № 2
^
має лише особливе значення всередині []
якщо це перший характер
-
має лише особливе значення всередині []
якщо є між двома буквами.
.
, (
і )
не мають особливого значення всередині []
.
Просто читання основної інформації в документи сказав би вам все це.
Вираз регулярно відповідає одному з символів класу.