私はちょうど文字列からかなり少数の単語の最もゆったりした意味で、「解析された」正規表現であるいくつかのコードを見直しました。正規表現マッチャーで型付きのグループを返す方法がないのはなぜですか?
簡単な例である:
'3 4 5 .....というように' と一致する必要があり^([0-9]{1}) ([0-9]{2}) ([0-9]{1}) .... and so on$
、私は間違っていない場合。
文字列でチェックされている数値の量と、私が参照している場合の文字列の複雑さのために、実際には正規表現が一致する可能性があります数字を抽出しようとするときには、コードの作者は、マッチャーグループでは、次の方法に公正少数の呼び出しを行うために持っていた: -
Integer.parseInt(matcher.group(index))
正規表現エンジンが明示的に捕獲するように指示されている場合グループに0-9(1-2)しか含まれていない場合、正しいタイプを明示的に取り込み、再び解析しないようにする方法はありませんか?この場合、正規表現を使用せずにパターンを一致させるべきかどうかは、パターンの複雑さに依存しますか?おそらく、正規表現グループのマッチャーの仕組みについての私の理解は、完全ではありません。
これを他の言語でもサポートしていますか?
軽量のparseIntを実装すると、エラーチェックブランチがなくてもパフォーマンスの最後のビットを絞り出す傾向がある場合はパフォーマンスが少し改善されると思います。 parseIntメソッドを見ると、正規表現マッチの後に必要ではないかもしれないエラーチェック用のブランチがかなりあります。
これは、マッチャーの動作方法です。スティングイン - ストリングアウト。それを取るか、それを解析してください。 –
Integerの呼び出しが嫌いな場合は、解析を行うオブジェクトにマッチャーをラップすることができます。すべての場所でparseInt –
またはそれに応じて単一のグループを抽出することができますあなた自身の流暢型の正規表現マッチャーを構築;-) – Roland