Прямо сейчас у меня есть регулярное выражение, и я хочу изменить одну часть регулярного выражения.Соответствие всех символов, кроме пробелов в regex
(.{3,}?) ~
^--- Эта часть кода, где он говорит, (любые символы, которые 3 или более в длину, и сопоставляет до ближайшего места), я хочу, чтобы изменить его (любые символы , за исключением пробелов, которые имеют длину 3 или более и соответствуют ближайшему пространству). Как я могу сказать это в регулярном выражении?
$text = "my name is to habert";
$regex = "~(?:my name is |my name\\\'s |i am |i\\\'m |it is |it\\\'s |call me)?(.{3,}?) ~i";
preg_match($regex, $text, $match);
print_r($match);
Результат:
Array ([0] => my name [1] => my name)
нужны Результат:
Array ([0] => name [1] => name)
'/ ([^] {3}) /', кажется, что вы ищете. – Ghedipunk
@Ghedipunk Почему нужны квадратные скобки? Без них он не работает. – frosty
Это [класс символов] (http://www.regular-expressions.info/charclass.html). '[abc]' означает совпадение с одним из a, b или c. С кареткой (^) спереди, это означает, что не соответствовать ничему, содержащемуся в этом классе символов. В этом случае это означает соответствие любой буквы, которая не является пространством. Вы можете расширить его до любого символа, который не является типом пробелов (tab, space, newline), выполнив '[^ \ s]' или '[\ S]'. – Ghedipunk