Регулярка, перевод строки

  • Автор темы Автор темы jenia
  • Дата начала Дата начала

jenia

Новичок
Регулярка, перевод строки

Вот функция с регулярным выражением:
preg_match("/[^A-Za-zА-Яа-я0-9_ \-\.\!\?\,\:;`]/m", $text);
Оно должно пропускать все символы, которые указаны в регулярномы выражении и перевод строк. Для того, чтобы перевод строк пропускался, как я понимаю, нужно использовать параметры s и m. Пробовал их использовать, но что-то не получается никак. Что я не так делаю?
 
чтобы перевод строк пропускался, как я понимаю, нужно использовать параметры s и m
исходя из чего вы пришли к такому безусловно верному умозаключению? процитируйте нам мануал пожалуйста где такое написано
 
я понимаю, нужно использовать параметры s и m. Пробовал их использовать, но что-то не получается никак. Что я не так делаю?
Нужно почтать в мануале как обозначаются эти символы
 
Модификатор 'm' лишь применит выражение ко всем строкам, т.е. условные подмаски ^ и $ будут расценены как начало подстроки после начала значения или после перевода строки, и как конец строки соответственно. В контексте данного выражения 'm' никак не влияет на результат.
 
Автор оригинала: WP
Модификатор 'm' лишь применит выражение ко всем строкам, т.е. условные подмаски ^ и $ будут расценены как начало подстроки после начала значения или после перевода строки, и как конец строки соответственно. В контексте данного выражения 'm' никак не влияет на результат.
Да, Вы абсолютно правы. Просто я читал мануал на английском и не до конца понял смысл, теперь прочитал на русском и стало более понятно про модификатор "m".
Теперь вопрос: если моё регулярное выражение не содержит символов '^' или '$', то я должен переписать его так, чтобы оно их содержало и использовать модификатор "m" или я должен использовать что-то другое, а не этот модификатор?
То есть можно написать так:
PHP:
preg_match("/^[^A-Za-zА-Яа-я0-9_ \-\.\!\?\,\:;`]$/m", $text);
и оно будет работать.
Или правильнее написать как-то по-другому?
 
Код:
preg_match("/^[^A-Za-zА-Яа-я0-9_ \-\.\!\?\,\:;`]$/m", $text);
ну так получилась строки из одного символа который не совпадает с A-Za-zА-Яа-я0-9_ \-\.\!\?\,\:;`

Скачиваем книгу Дж.Фридл Регулярные выражения из серии библиотека программста, изд. Питер и вникаем
 
Автор оригинала: dimagolov
Код:
preg_match("/^[^A-Za-zА-Яа-я0-9_ \-\.\!\?\,\:;`]$/m", $text);
ну так получилась строки из одного символа который не совпадает с A-Za-zА-Яа-я0-9_ \-\.\!\?\,\:;`

Скачиваем книгу Дж.Фридл Регулярные выражения из серии библиотека программста, изд. Питер и вникаем
Разве?
Странно, а у меня это выражение работает как надо (хотя я до конца не уверен).
Ответьте только на один вопрос: моя проблема рашается с помощью модификатора m или мне "копать" в другую сторону?
 
jenia
ответь на такие вопросы:
1. чему отвечает [A-Z] в регулярке
2. чему отвечает [^A-Z] в регулярке
3. что отберется по /^[^A-Z]/
4. что отберется по /[^A-Z]$/
5. что отберется по /^[^A-Z]$/
 
Вот что у меня получилось:
PHP:
preg_match("/^[A-Za-zА-Яа-я0-9_ \-\.\!\?\,\:;`]+$/m", $text);

А для того, чтобы выражение пропускало все символы кроме указанных, нужно написать так:
PHP:
preg_match("/^[^A-Za-zА-Яа-я0-9_ \-\.\!\?\,\:;`]+$/m", $text);

Теперь правильно написал?
 
Сверху