次のような文字列の 2 番目のドットの後に数値を取得したい: 4.5.3. ある種の質問ですか? しかし、入力文字列は41.53.32. ある種の質問ですか?したがって、最初の例では3を、2 番目の例では32を目指しています。
私はそれをやろうとしています
(?<=(\.\d\.))[0-9]+
最初の例では機能しますが、追加しようとする(?<=(\.\d+\.))[0-9]+
とまったく機能しません。
次のような文字列の 2 番目のドットの後に数値を取得したい: 4.5.3. ある種の質問ですか? しかし、入力文字列は41.53.32. ある種の質問ですか?したがって、最初の例では3を、2 番目の例では32を目指しています。
私はそれをやろうとしています
(?<=(\.\d\.))[0-9]+
最初の例では機能しますが、追加しようとする(?<=(\.\d+\.))[0-9]+
とまったく機能しません。
最後の数字の後に常にドットがある場合は、次の式を使用できます。
\d+(?=\.(?:[^\d]|$))
これは、1 つまたは複数の数字\d+
の後にドットが続き、その後に文字列の終わりの.
数字ではない何か、つまり.[^\d]
$
(?=\.(?:[^\d]|$))
(\d+.\d+.)\K\d+
最初のセクションが選択されていないグループとして、数字ドット数字ドット数字を一致させます。
最も単純な完全な答えは、おそらく次のようなものです。
(?<=^(?:[^.]*\.){2})\d+
パフォーマンスが心配な場合は、次のコードの方がわずかに高速です。
^(?:[^.]*\.){2}(\d+)
これは、キャプチャ グループ 1 で目的の値をキャプチャします。
可変長の後読みをサポートしていないエンジンを使用している場合は、2 番目のバージョンを使用する必要があります。
必要に応じて、数字のみを一致させるため[^.]
に, に置き換えることができます。\d
PERL または PHP を使用している場合は、次のパターンを試すことができます。
(?:\d+\.){2}\K\d+