0

「TEST(10,20,30)」のような文字列がある場合、この文字列から 10 だけを取り出すにはどうすればよいでしょうか。

私が試してみました

/\(([^\)]+)\)/

それは括弧の内側を取得しますが、コンマを追加しようとすると、たとえば

/\(([^\),]+)\)/

その後、何も一致しません。

4

4 に答える 4

2

この場合、拾いたい部分のパターンは、捨てたい部分のパターンよりもはるかに単純です。

"TEST(10,20,30)"[/\d+/] # => 10
于 2012-10-23T19:17:19.057 に答える
1

この文字列から10個だけを引き出すにはどうすればよいでしょうか。

使用lookaheadしてlookbehind

(?<=\()\d+(?=,)

ここで動作します

于 2012-10-23T19:20:25.400 に答える
1

これは、カンマと閉じ括弧の間のものも一致するように正規表現に指示する必要があるためです (または省略します)。

/\(([^),]+)/

また

/\(([^),]+)[^)]*\)/

ご覧のとおり、文字クラス内の括弧をエスケープする必要もありません。

于 2012-10-23T18:23:10.810 に答える
0

これが正しい方向にあなたを導くことができることを願っています:

irb(main):001:0> str = "TEST(10,20,30)"
=> "TEST(10,20,30)"
irb(main):002:0> str =~ /\w+\(([^,]+),.+\)/
=> 0
irb(main):003:0> $~[1]
=> "10"

正規表現はこれを行います:
\ w +
1つ以上の単語文字( "TEST")

(([^、] +)
コンマ以外のグループ。これは、左の括弧からコンマまでのすべてに一致します。

正規表現の残りの部分は他のパラメーターを無視しますが、それらを別々のグループに含めるように変更することができます。

于 2012-10-23T18:31:17.687 に答える