0

正規表現を使用して文字列から特定の浮動小数点数を見つけたいと思います。
ストリング

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

これを見つけるために必要な唯一の数字は 0.30 です。私は多くのパターンを試しましたが、それらはすべて文字列内の浮動小数点数全体を返し、一部はまったく機能しません

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

私も試しました

floatval()

しかし、どちらも機能しません

4

3 に答える 3

3

これを試して:

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

小数点を含む数値に一致しますが、前後$%.

正規表現を参照してください

于 2013-06-29T01:51:30.897 に答える
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
于 2013-06-29T01:48:44.703 に答える
0

文字列形式が静的である場合 (たとえば、変更されない場合)、正規表現を使用して検索する必要はありません。

探している文字列コンポーネントは、スペースに基づいて文字列を分解することで簡単に見つけることができます。

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

さらに、正規表現を使用する場合、そのコードに出くわした開発者は、それを理解するのに時間を費やす必要があります - よく文書化しない限り!

于 2013-06-29T01:55:52.627 に答える