2012-04-20 9 views
1

私たちは、例えば、文字列にfloat値を持つ整数値を置き換えるためにしようとしている:正規表現は11002ではなく、数字と一致している必要があり正規表現は、浮動小数点数と整数を交換する

#var1 * #var2/ 1+100 - 2 + 1.5 - .5 

ましたすでに浮動小数点数です。例えば、1.5.5

私は数字を自分で見つけて/[^\w](\d+)/まで取得しています。 今、\.?\d+が続くこの正規表現から数値を除外するにはどうすればよいですか?

正規表現は、JavaやActionScript 3

Regular Expression Test

+0

おかげです。置き換えられる数字のキャプチャグループが追加された@Marko Topolnikの答えである '(?<![。\ w])(\ d +)(?![。\ w])' – amiuhle

答えて

2

これは、Javaで動作します参照してください(ワード境界に一致するように、二重否定。):/(?<![.\w])\d+(?![.\w])/。先読みと後ろ向きの両方を使用して、ドット/文字の前または後に一致する数字を停止します。

1

で動作するはずなぜ無しようとして先読み?私はそれがJavaで動作すると信じていますが、ActionScriptについての手掛かりはありません。

[^\w](\d+)(?![.]\d+)/

は直ちにドット整数(S)が続かない数字のみの配列をマッチします。

1

あなたはこれを排除するこの

(?<!\.\d+) 

のためのn egative look aheadを使用できますが、そうでない場合は、あなたがparital試合を取得するアンカーと組み合わせる必要があります。

/(?<!\B|\.)(\d+)(?!\.\d+)\b/ 

数字の前の単語以外の文字も変更する必要があります。私はここで負のlookbehindアサーションを使用しました。それは何の数字の前にドットか非単語境界が存在しないことを保証

はそれがhere on Regexr

0

正規表現の構文がlookaheadをサポートしている場合は、それを使用できます。 Javaはそうです。 AS3についてはわからない

/[^\w.]\d+(?!\.)/ 

この場合、置換文字列全体を置換に使用したいとします。

0

私の提案は、あなたの答えを

\b(?<!\.)\d+(?!\.)\b 
関連する問題