2013-06-29 2 views
0

Я хотел бы найти определенное число с плавающей точкой из строки с использованием регулярного выражения.
строканайти конкретное число с плавающей точкой в ​​строке?

202-715-1278 2 0.01% 0.30 0.00% $0.00 0.00% 

единственное число, я должен найти этот 0.30. я пробовал много моделей, но все они возвращают целые числа с плавающей запятой в строке, и некоторые из них не работает, у него все

[-+]?([0-9]*\,)?[0-9]+ 
\d+(?:\.\d+)? 

также я попытался

floatval() 

но это не работать ни

+0

Каков шаблон? Вы пытаетесь получить всегда 4-й номер? только второй, который является плавающим числом? –

+0

im пытается получить этот 0,30, которые не имеют% или $ –

+0

Это все еще не ясно. Первое число, которое не имеет% или $, равно 2. Если вы хотите всегда 0,30, просто сделайте $ var = 0.30 –

ответ

3

Попробуйте это:

(?<!\$)\b[-+]?\d+\.\d+\b(?!%) 

Это совпадает с числом с десятичной точкой в ​​нем, но не предшествует $ или после %.

См RegExr

+0

отличное спасибо :) –

1

вы можете иметь несколько окруженных пробела (если это то, что вы ищете) с:

(?:^|\s)\K\d+(?:\.\d+)?(?=\s|$) 

объяснение:

(?:^|\s) # the begining of the string or a white character 
\K   # reset all that is matched before 
\d+  # digit one or more times 
(?:\.\d+)? # optional dot and digits 
(?=\s|$) # followed by a white character or the end of the string 
+0

ничего не возвращает :) http://rubular.com/r/A2gwavCxX8 –

+0

@ Dr.Neo: Normal, rubular для ruby ​​не для php. И рубин не поддерживает функцию '\ K'. Вместо этого используйте http://regex.larsolavtorvik.com/. –

0

Если формат строки является статическим (например, он не меняется), то почему бы использовать регулярное выражение, чтобы найти его?

Строки компонент, который вы ищете можно легко найти при взрыве на подстроках пространств и с небольшим усилием:

$string = "202-715-1278 2 0.01% 0.30 0.00% $0.00 0.00%"; 
$parts = explode(' ', $string); 
echo $parts[3]; // 0.30 

Кроме того, если вы используете регулярное выражение, любой разработчик, который, следовательно, попадается ваш код должен будет потратить время на понимание - если вы не задокументируете это хорошо!