1

私が持っている場合:

    ["eaacbf7e-37b3-509e-b2d1-ddce7f0e1f6e", "f9e52e06-697a-57af-9566-d05fabb001a4", 
     "19edb822-eccb-5289-8fee-a39cdda66cd5", "83d3ad63-b468-5a1e-ba6c-6b69eb4a3dc5"]

(全体が文字列である場合)

引用符(引用符を含む)内のコンテンツを選択するために使用できる単純な正規表現はありますか?

上記は文字列として出てくるので。正規表現を使用して、引用符内の各IDを(引用符とともに)選択し、それらをruby配列に格納したいと思います。

4

3 に答える 3

3

この正規表現を使用するだけです

"[^"]*"

[^"]*"つまり[^"]、0 を除く任意の文字に一致します。*

于 2012-10-30T04:02:23.653 に答える
2

正規表現でString#scanメソッドを使用してみてください/"[^"]+"/:

ids = str.scan(/"[^"]+"/) # => [ "eaacbf7e-...", "f9e52e06-...", ...]
puts ids
"eaacbf7e-37b3-509e-b2d1-ddce7f0e1f6e"
"f9e52e06-697a-57af-9566-d05fabb001a4"
"19edb822-eccb-5289-8fee-a39cdda66cd5"
"83d3ad63-b468-5a1e-ba6c-6b69eb4a3dc5"

その式は次のように分解されます。

str.scan(/"[^"]+"/)
#         │├──┘│└─ Another literal quotation mark (").
#         ││   └─ Match one or more of the previous thing.
#         │└─ A class matching any character except (^) quotation marks.
#         └─ A literal quotation mark (").
于 2012-10-30T04:42:46.667 に答える
1

なぜその形式の文字列を取得するのですか?JSON出力のように見えますが、そうである場合は、JSONモジュールで解析する必要があります。

require 'json'
require 'pp'

foo = [
  "eaacbf7e-37b3-509e-b2d1-ddce7f0e1f6e",
  "f9e52e06-697a-57af-9566-d05fabb001a4",
  "19edb822-eccb-5289-8fee-a39cdda66cd5",
  "83d3ad63-b468-5a1e-ba6c-6b69eb4a3dc5"
]

foo.to_json
=> "[\"eaacbf7e-37b3-509e-b2d1-ddce7f0e1f6e\",\"f9e52e06-697a-57af-9566-d05fabb001a4\",\"19edb822-eccb-5289-8fee-a39cdda66cd5\",\"83d3ad63-b468-5a1e-ba6c-6b69eb4a3dc5\"]"

それはおそらくあなたが得ている文字列です。JSONパーサーを使用して解析すると、Ruby配列が返されます。

pp JSON[ foo.to_json ]
=> ["eaacbf7e-37b3-509e-b2d1-ddce7f0e1f6e",
"f9e52e06-697a-57af-9566-d05fabb001a4",
"19edb822-eccb-5289-8fee-a39cdda66cd5",
"83d3ad63-b468-5a1e-ba6c-6b69eb4a3dc5"]
于 2012-10-30T06:13:48.910 に答える