1

Ruby では、含まれている文字列に存在する場合、目的の文字列以外をすべて削除する正規表現はどれですか? 文字については知って/[^abc]/いますが、文字列についてはどうでしょうか。

正規表現のみを使用して文字列に存在する場合、文字列が"group=4&type_ids[]=2&type_ids[]=7&saved=1"あり、パターンを保持したいとしますか?group=\d

現在、私は分割してから、結果の列挙可能なコレクション&で一致する条件で選択を行っています。=~ /group=\d/正常に動作しますが、これをより直接的に行うための正規表現を知りたいです。

4

4 に答える 4

2

単に:
part = str[/group=\d+/]

数字のみが必要な場合は、次のようにします。
group_str = str[/group=(\d+)/,1]

整数として数値のみが必要な場合は、次のようにします。
group_num = str[/group=(\d+)/,1].to_i

警告:一致が見つからない場合はString#[]が返さnilれ、やみくもに呼び出すとnil.to_i常に が返されます0

于 2011-02-01T15:23:21.687 に答える
1

あなたが試すことができます:

$str =~ s/.*(group=\d+).*/\1/;
于 2011-02-01T07:05:29.193 に答える
1

通常、複雑な正規表現についてあまり心配することはありません。文字列を小さなパーツに分割するだけで簡単になります。

asdf = "group=4&type_ids[]=2&type_ids[]=7&saved=1"

asdf.split('&').select{ |q| q['group'] } # => ["group=4"]

それ以外の場合は、さまざまな方法で正規表現を使用できます。私がよく使う方法は次の2つです。

asdf.scan(/group=\d+/) # => ["group=4"]
asdf[/(group=\d+)/, 1] # => "group=4"
于 2011-02-01T07:06:06.537 に答える
0

試す:

str.match(/group=\d+/)[0]
于 2011-02-01T07:34:47.000 に答える