|
|
|
| помогите, плиз. пытаюсь разобраться с рег. выражениями.
про preg_match (string pattern, string subject [, array matches [, int flags]]) пишут, что
Если matches предоставлен, он заполняется результатами поиска. $matches[0] будет содержать текст, совпавший со всем патэрном, $matches[1] будет содержать текст, совпавший первым захваченным субпатэрном в скобках, и так далее
и почему у меня не работает не пойму
preg_match("/([M][^\s]*)/", "Die Musik wird digital Mit", $matches);
echo("matches[0]= ".$matches[0]); echo "<br>";
echo("matches[1]= ".$matches[1]); echo "<br>";
echo("matches[2]= ".$matches[2]);
|
т.е.хочу выбрать все слова в тексте, которые начинаются на М
почему в ответ получаю
matches[0]= Musik
matches[1]= Musik
matches[2]=
|
должно вроде как
matches[0]= Die Musik wird digital Mit
matches[1]= Musik
matches[2]=Mit
|
пожалуйста, подскажите. | |
|
|
|
|
|
|
|
для: poli1
(19.08.2012 в 11:28)
| | >> про preg_match пишут, что...
Там же пишут, что:
Функция preg_match() возвращает количество найденных соответствий шаблона pattern. Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает свою работу после первого найденного совпадения. Функция же preg_match_all(), наоборот, будет продолжать свою работу пока не достигнет конца subject. Функция preg_match() возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки. | |
|
|
|
|
|
|
|
для: Drago
(19.08.2012 в 14:04)
| | ну да, видимо я в корне не поняла зачем используют рег. выр.
я собиралась эту ф-ию использовать, чтобы выбрать все слова в тексте произвольной длины (возможно по какому-то признаку, например, все слова из 4-х и более символов, а возможно нет).
теперь я даже сомневаюсь, стоит ли для этой задачи привлекать использование регулярных выражений и в частности ф-ции preg_match_all. Т.е. я понимаю, что это можно сделать через рег. выр. Но будет ли это правильно с т.зр. эффективности и т.п.
Не подскажите, какие инструменты языка лучше использовать для решения этой задачи.
спасибо. | |
|
|
|
|
|
|
|
для: poli1
(20.08.2012 в 21:02)
| | РВ - это очень мощный инструмент. Соответственно довольно медленный. Соответственно, то, что можно сделать строковыми функциями - лучше сделать ими. Но это довольно ограниченный набор. Для задач типа "например, все слова из 4-х и более символов", РВ - самое то. | |
|
|
|
|
|
|
|
для: Sfinks
(20.08.2012 в 22:00)
| | спасибо за подсказку | |
|
|
|