1

次のような文字列の 2 番目のドットの後に数値を取得したい: 4.5.3. ある種の質問ですか? しかし、入力文字列は41.53.32. ある種の質問ですか?したがって、最初の例では3を、2 番目の例では32を目指しています。

私はそれをやろうとしています

(?<=(\.\d\.))[0-9]+ 

最初の例では機能しますが、追加しようとする(?<=(\.\d+\.))[0-9]+ とまったく機能しません。

4

5 に答える 5

-1

最後の数字の後に常にドットがある場合は、次の式を使用できます。

\d+(?=\.(?:[^\d]|$))

これは、1 つまたは複数の数字\d+の後にドットが続き、その後に文字列の終わりの.数字ではない何か、つまり.[^\d]$(?=\.(?:[^\d]|$))

正規表現101のデモ

于 2013-11-09T22:37:18.293 に答える
-1
(\d+.\d+.)\K\d+

最初のセクションが選択されていないグループとして、数字ドット数字ドット数字を一致させます。

于 2013-11-09T23:18:56.830 に答える
-1

最も単純な完全な答えは、おそらく次のようなものです。

(?<=^(?:[^.]*\.){2})\d+

パフォーマンスが心配な場合は、次のコードの方がわずかに高速です。

^(?:[^.]*\.){2}(\d+)

これは、キャプチャ グループ 1 で目的の値をキャプチャします。

可変長の後読みをサポートしていないエンジンを使用している場合は、2 番目のバージョンを使用する必要があります。

必要に応じて、数字のみを一致させるため[^.]に, に置き換えることができます。\d

于 2013-11-10T01:18:45.223 に答える
-1
(?:(?:.*\.)?){2}(\d+)

次の正規表現は、ユースケースで機能するはずです。

ここでチェックしてください

于 2013-11-09T22:43:37.327 に答える
-1

PERL または PHP を使用している場合は、次のパターンを試すことができます。

(?:\d+\.){2}\K\d+
于 2013-11-09T22:51:30.033 に答える