0

ルビーにはかなり新しい。文字列を解析し、正規表現でいくつかの変数を割り当てようとしています。

私はドキュメントを参照し、少しグーグルで調べましたが、次のことがうまくいくはずです。

@operating_system, @os_update, @os_arch = @version_line[0].match(
        /(Solaris \d+)\s+\d+\/\d+\ss\d+[sx]_u(\d+)\wos_\d+\w+\s+(\w+)$/
        )

どこ@version_line = [" Oracle Solaris 10 9/10 s10x_u9wos_14a X86\n"]

しかし、最初の変数に @operating_system が割り当てられるだけです。Solaris 10 9/10 s10x_u9wos_14a X86

私はそれを間違った方法でやろうとしていますか?

4

2 に答える 2

1

実際には、表示されている文字列を生成するメソッドを持つオブジェクトをmatch返します。MatchDatato_s

一致したすべてのキャプチャ グループを配列として取得するには、次のcapturesメソッドを使用します。

@operating_system, @os_update, @os_arch = @version_line[0].match(
        /(Solaris \d+)\s+\d+\/\d+\ss\d+[sx]_u(\d+)\wos_\d+\w+\s+(\w+)$/
        ).captures
于 2012-07-06T11:52:42.500 に答える
0

この正規表現を使用します(Solaris \d+)\s+\d+/\d+\s\w+\s\w+

于 2012-07-06T11:52:41.213 に答える