powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Найти в строке число
14 сообщений из 14, страница 1 из 1
Найти в строке число
    #38331616
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можно найти в строке число из определенного диапазона к примеру от 5 до 200 при этом число может быть с пробелами (пример 1 2 1).
пример строки:
Код: php
1.
Строка Строка, строка 10 1 строка...
...
Рейтинг: 0 / 0
Найти в строке число
    #38331620
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
От суда нужно получить 101 если попадает в диапазон от 5 до 200.
...
Рейтинг: 0 / 0
Найти в строке число
    #38331630
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как то так

1. Регулярка вроде /([\d\s]+)/
2. Удалить из найденного все не-цифры
3. к оставшемуся применить (int)
4. проверить полученное число на соответствие заданному лиапазону
...
Рейтинг: 0 / 0
Найти в строке число
    #38331642
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleКак то так

1. Регулярка вроде /([\d\s]+)/
2. Удалить из найденного все не-цифры
3. к оставшемуся применить (int)
4. проверить полученное число на соответствие заданному лиапазону
Текст обязательное условие, может как то так но что то не получается тоже
Код: php
1.
/(\D([1-5]\.?[0-9])\D)/
...
Рейтинг: 0 / 0
Найти в строке число
    #38331688
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде нашел что искал, осталось с пробелами разобраться
Код: php
1.
/^([^\d]+)(14|1[5-9]|[2-6][0-9]|7[0-4]|75)([^\d]+)$/


ищет от 14 до 75
...
Рейтинг: 0 / 0
Найти в строке число
    #38331759
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tweaker7Вроде нашел что искал, осталось с пробелами разобраться
Код: php
1.
/^([^\d]+)(14|1[5-9]|[2-6][0-9]|7[0-4]|75)([^\d]+)$/


ищет от 14 до 75

Это какой-то бред :) Чем вариант vkle не подошёл? Нужно всё сделать только с помощью регулярки что ли (тогда это надо писать в задаче)? Тогда требование не понятно, разве только если Вы студент и Вас препод гоняет

Кстати, Вам показали как найти все числа в тексте, а Ваш вариант только одно ищет... а если поиск с пробелами прикрутить - вообще фигня
Код: javascript
1.
/^([^\d]+)(1\s*4|1\s*[5-9]|[2-6]\s*[0-9]|7\s*[0-4]|7\s*5)([^\d]+)$/



И Всёровно потом пробелы удалять надо будет.
...
Рейтинг: 0 / 0
Найти в строке число
    #38331795
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tweaker7Текст обязательное условиеВы хотите сказать что текста в строке может и не быть? Или может не быть только в начале или только в конце? Тогда не ясно, что делать в такой ситуации - продолжать искать цифры или завершить работу.
...
Рейтинг: 0 / 0
Найти в строке число
    #38331802
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tweaker7ищет от 14 до 75Миннуточку, выше требовалось найти числа в диапазоне от 5 до 200. Попробуйте написать свою регулярку под оное условие. А после, в порядке разминки, на произвольный диапазон, задаваемый переменными $a и $b. Будет очень интересно :-)
...
Рейтинг: 0 / 0
Найти в строке число
    #38331821
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторБудет очень интересно :-)
через callback можно
...
Рейтинг: 0 / 0
Найти в строке число
    #38331853
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrowавторБудет очень интересно :-)
через callback можно
Через какой колпак?

Как вариант, тупо удалить все кроме цифр:
Код: php
1.
$num = (int)preg_replace('/[^\d]+/', '', $str);


Вроде должно прокатить, если в строке до одного числа.
...
Рейтинг: 0 / 0
Найти в строке число
    #38331884
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tweaker7Вроде нашел что искал, осталось с пробелами разобраться
Код: php
1.
/^([^\d]+)(14|1[5-9]|[2-6][0-9]|7[0-4]|75)([^\d]+)$/


ищет от 14 до 75

а.. и вот ещё... регулярку тоже студент писал видимо... сразу чёто и не заметил... Нормально регулярка с тем же "функционалом" будет выглядеть так:
Код: php
1.
/^[^\d]+(1[4-9]|[2-6][0-9]|7[0-5])[^\d]+$/



vkle, через ж... всё возможно (а вопрос в том, надо ли - это уже другое дело) :
Код: php
1.
2.
3.
preg_match_all("/(".$a[0]."[".implode('-9][', array_slice(str_split($a), 1))."]"
.(strlen($b)>strlen($a) ? "|[".$a[0]."-9]\\d{".(strlen($a)-1)."}|[1-".($b[0]-1)."]\\d{".(strlen($b)-1)."}".(strlen($b)-strlen($a)>1 ? "|\\d{".(strlen($a)+1).",".(strlen($b)-1)."}" : "") : "|[".($a[0]+1)."-".($b[0]-1)."]\\d{".(strlen($a)-1)."}")
."|".$b[0]."[0-".implode('][0-', array_slice(str_split($b), 1))."]".")[^\\d]/", $str, $matches);



Ну уж пробелы надо заранее удалить, с пробелами не осилил (и так около часа эту строку писал, реально разминка классная)
...
Рейтинг: 0 / 0
Найти в строке число
    #38331890
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хе... отборный г...код.
вот кстати поправка (если строка заканчивается числом прошлый г-вариант не канает)...
Код: php
1.
2.
3.
preg_match_all("/^[^\\d]*(".$a[0]."[".implode('-9][', array_slice(str_split($a), 1))."]"
.(strlen($b)>strlen($a) ? "|[".$a[0]."-9]\\d{".(strlen($a)-1)."}|[1-".($b[0]-1)."]\\d{".(strlen($b)-1)."}".(strlen($b)-strlen($a)>1 ? "|\\d{".(strlen($a)+1).",".(strlen($b)-1)."}" : "") : "|[".($a[0]+1)."-".($b[0]-1)."]\\d{".(strlen($a)-1)."}")
."|".$b[0]."[0-".implode('][0-', array_slice(str_split($b), 1))."]".")[^\\d]*$/", $str, $matches);
...
Рейтинг: 0 / 0
Найти в строке число
    #38332131
tweaker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хех.. Что то много всего,
сделал так
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
		$age_pattern = '(14|1[5-9]|[2-6][0-9]|7[0-4]|75)';
		$message = &Analize::$_message;	
		
		if(preg_match('/^([\D]+)'.$age_pattern.'([\D]+)$/', $message, $match))
		{
			return array(
				'age_my'	=> $match[2],
				'age_its_from'	=> $match[2] - 3,
				'age_its_to'	=> $match[2] + 3,
			);
		}
		elseif(preg_match('/'.$age_pattern.'([\D]+)'.$age_pattern.'([\s|\-|\.]+)'.$age_pattern.'/', $message, $match))
		{
			return array(
				'age_my'	=> $match[1],
				'age_its_from'	=> $match[3],
				'age_its_to'	=> $match[5],
			);
		}
		elseif(preg_match('/'.$age_pattern.'([\s|\-|\.]+)'.$age_pattern.'([\D]+)'.$age_pattern.'/', $message, $match))
		{
			return array(
				'age_my'	=> $match[5],
				'age_its_from'	=> $match[1],
				'age_its_to'	=> $match[3],
			);
		}



Вроде все ищет под определенное условие, там анкета будет вот надо возраст найти и какого возраста ищут, так что цифры могут быть где угодно, нужно по определенным скелетам искать цифры.
...
Рейтинг: 0 / 0
Найти в строке число
    #38332150
JustCrazy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: php
1.
2.
3.
4.
5.
6.
7.
$text='Строка Строка, строка 10    1- 2 3  . 4строка...';
if(preg_match("/(\d+((?:\s|\-|\.)*?\d+)*)/i",$text,$res)){
   $str=(int)preg_replace('/[^\d]+/', '', $res[1]);
   if($str>13 and $str<76) {
      //а тут уже делайте, что хотите 
   }
}

м, не ? если правильно уловил суть..
увидеть бы сам исходник, по которому надо шастать
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Найти в строке число
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]