Моя функция проверки php показывает правильный ответ, но я думаю, что это неправильно

#php #regex

#php #регулярное выражение

Вопрос:

Регулярное выражение [w|W]*s[w|W]* и строка aaab@ asd123 , потому что я думаю [w|W]* , равно w*|W* , что означает символ, кратный слову, или символ, не содержащий слов… как он может иметь как слово, так и несловесный символ вместе, например aab@ ?

Комментарии:

1. Как получается, что что-то правильно и неправильно одновременно? Не понимаю вас…

2. Когда вы уверены, что это неправильно , свяжитесь с нами

3. Ваше регулярное выражение соответствует всему, что есть, затем 0 пробелов, а затем снова любым 0 символам. Посмотрите вашу демонстрацию регулярных выражений. Прямо сейчас просто непонятно, что вы хотите сделать. Обратите [w|W]* внимание!= w*|W* . Может быть, вам нужно (S )s(S ) .

Ответ №1:

ПРИМЕЧАНИЕ: Ваша строка, по-видимому, разделена пробелом, поэтому вы можете просто использовать explode(" ", $s) . Приведенный ниже ответ состоит в том, чтобы просто объяснить, как работает регулярное выражение.

Я полагаю, что вы неправильно [w|W]* поняли и w*|W* : первый соответствует любым символам 0 , а второй соответствует либо символам 0 , либо символам 0 , не состоящим из слов.

Вы, кажется, хотите сопоставить 0 символов, не содержащих пробелов, используйте S :

 S s S 
  

Или, чтобы захватить две части, не содержащие пробелов:

 (S )s (S )
  

Шаблон будет соответствовать одному или нескольким вхождениям шаблона без пробелов с натяжкой.

Смотрите Демонстрацию регулярных выражений