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

jenia

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

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

Андрейка

Senior pomidor developer
чтобы перевод строк пропускался, как я понимаю, нужно использовать параметры s и m
исходя из чего вы пришли к такому безусловно верному умозаключению? процитируйте нам мануал пожалуйста где такое написано
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
я понимаю, нужно использовать параметры s и m. Пробовал их использовать, но что-то не получается никак. Что я не так делаю?
Нужно почтать в мануале как обозначаются эти символы
 

WP

^_^
Модификатор 'm' лишь применит выражение ко всем строкам, т.е. условные подмаски ^ и $ будут расценены как начало подстроки после начала значения или после перевода строки, и как конец строки соответственно. В контексте данного выражения 'm' никак не влияет на результат.
 

jenia

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

dimagolov

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

Скачиваем книгу Дж.Фридл Регулярные выражения из серии библиотека программста, изд. Питер и вникаем
 

jenia

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

Скачиваем книгу Дж.Фридл Регулярные выражения из серии библиотека программста, изд. Питер и вникаем
Разве?
Странно, а у меня это выражение работает как надо (хотя я до конца не уверен).
Ответьте только на один вопрос: моя проблема рашается с помощью модификатора m или мне "копать" в другую сторону?
 

dimagolov

Новичок
jenia
ответь на такие вопросы:
1. чему отвечает [A-Z] в регулярке
2. чему отвечает [^A-Z] в регулярке
3. что отберется по /^[^A-Z]/
4. что отберется по /[^A-Z]$/
5. что отберется по /^[^A-Z]$/
 

jenia

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