| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > регулярные выражения |
| Автор: alyam 23.8.2007, 03:39 |
| есть переменная, примерно выглядит так: $str="слово1 слово2 слово3" слов может быть много разных нужно оставить только первых два. делаю так: $str=~/^((.*?)\s(.*?)\s)/ дальше работаю с переменной $1 а есть ли способ пооптимальней? |
| Автор: amg 23.8.2007, 06:44 | ||||
Нежадный мультипликатор (который со знаком вопроса) - это неэффективно. Лучше так:
Если же нужно изменить $str, оставив только первые два слова, то
|
| Автор: Nab 23.8.2007, 10:11 | ||
| alyam, не понятен вопрос, что нужно удалить а что оставить... Дайте пример с большим количеством слов. Добавлено через 8 минут и 25 секунд
|
| Автор: nitr 23.8.2007, 10:58 | ||||
используя ответ, и как я понял вопрос, то
|
| Автор: Nab 23.8.2007, 11:38 |
| Хехе, nitr, а на двух словах не сработает, а если больше, то захватит минимум один пробел в конце... а оно надо? |
| Автор: amg 23.8.2007, 11:55 | ||
Хехе, чтобы пробелы между 2-м и 3-м словами не захватывались, нужен третий вариант
|
| Автор: nitr 23.8.2007, 13:11 | ||
| а это уже иное человек пускай сначала все уточнит, а то "пальцем в небо" Добавлено через 1 минуту и 46 секунд nitr, amg подправил ;) Добавлено через 3 минуты и 21 секунду или жестко:
;) |
| Автор: alyam 23.8.2007, 13:51 |
| а если одно слово? слов может быть от 1 до infinity захватывать пробел в конце не нужно. я потом объединяю эти слова через точку join('.',split(/ /,$str)) может можно сразу в split задать размер массива? |
| Автор: amg 23.8.2007, 15:00 | ||||||
Конечно можно:
Но бы сделал так, если нужно всего два слова:
|
| Автор: amg 24.8.2007, 14:20 |
| Ну уж прямо так... Я, например, частенько отвечаю и на не очень внятные или неинтересные вопросы, просто стараюсь сделать это так, чтобы вызвать ответный поучительный флейм со стороны кого-нибудь типа тебя или других знатоков. |
| Автор: nitr 24.8.2007, 14:29 |
| amg, это понятно, но у него конкретная задачка, а твои "иные", больше похожи на "перл-гольф"/JAPH Я уже описал, как данный топик называется - "пальцем в небо". Т.к. раздуваем простейшую регулярку... |