-4

試してみ\b[0-9]{1,4}\.[0-9]{1,3}\.[0-9]{0,3}ましたが、34.89 と 23.89 がありません

以下のテキストの 28.72% を除くすべての数列が必要です

34.89
0105.93.10  ghghghh
0105.93.20  ghghhh 
jjjjjhjj 0105.93.30 jsdfsd iksifsdjfk sdfsdk
0105.93.40ierfgg dfgkdfg dfgolgh 23.89
28.72%

ありがとう

ポール

4

3 に答える 3

2

正規表現では、2つのドットが存在する必要があります。最後のドット桁シーケンスをオプションにする必要があり、次の場所%または別の数字が続く一致を除外する必要があります(そうでない場合28.7は内で28.72%一致します)。

\b[0-9]{1,4}\.[0-9]{1,3}(?:\.[0-9]{1,3})?(?![0-9%])
于 2013-02-27T15:20:55.427 に答える
1

最後の部分をオプションにする

\b[0-9]{1,4}\.[0-9]{1,3}(?:\.[0-9]{0,3})?

元の表現ではピリオドが必要でした。

matching に関するルールがあまり具体的ではなかっ%たので、次のようにしました。

\b[0-9]{1,4}\.[0-9]{1,3}(?:\.[0-9]{0,3})?(?=[^%\d]|$)

最後の部分は、% 以外の数字以外の文字または行末の肯定的な先読みです。それ以外28.7の場合は式の残りの部分と一致し、最後は2パーセント以外の文字と一致します。

于 2013-02-27T15:25:19.330 に答える
0

これにより、単一のドットで区切られ、その後に:が続かないすべての数値グループが検索され%ます。

(?:\d+\.)+\d+(?!\%)

ドットの両側に少なくとも1桁の数字が必要です。それ以外は、各グループの桁数は関係ありません。Atでは、数値に少なくとも1つのドットが必要です。

これには、各グループが2〜4桁である必要もあります。

(?:\d{2,4}\.)+\d{2,4}(?!\%)
于 2013-02-27T15:20:15.227 に答える