-1

class1次の文字列の、class2、およびに一致する正規表現で問題が発生していclass3ます (理想的には、メソッドに渡されるクラスの数が一定ではないため、パイプで区切られたn個の単語を持つことができます)

class1|class2|class3 path/to/resource

のみを返す次のマッチャーがありますclass1。ボーナスポイントは、リソースパスのマッチャーも見つけてくれる人です。

編集

すべての助けに感謝します - 至る所にポイントがあります!

4

5 に答える 5

2

入力の形式が適切であると確信している場合、パイプ文字とスペースの両方で文字列を分割することをお勧めします。例えば:

components = "class1|class2|class3 path/to/resource".split(/[ \|]/)

次に、n 個のコンポーネントを含む配列にアクセスし、その後に操作してアクセスできるリソースへのパスを指定します。

resourcePath = components.pop()
classes = components

編集:これの元のトピックは、OPがRubyを使用していることを示唆していたため、私の答えです。

于 2013-11-15T07:37:04.757 に答える
1

指定した入力で正規表現を使用する場合、これによりクラスとパスが抽出されます。

([\w/]+)\|? ?

入力

class1|class2|class3 path/to/resource

出力

class1
class2
class3
path/to/resource
于 2013-11-15T08:01:38.817 に答える
1
string = "class1|class2|class3 path/to/resource".split(%r{[| ]})

=> ["class1", "class2", "class3", "path/to/resource"]

于 2013-11-15T07:54:58.353 に答える
1
\w+(\|\w+)*\s+\w+(\/\w+)*

クラスの名前は、1 つ以上の単語文字で構成されていると想定しました。それ以上に制限されている場合は調整します。たとえば、class\d+番号付きクラスのみに使用します。

クラス名の後に任意の数の [クラス名が続くパイプ] があります。次に、1 つ以上のスペースがあり、その後に基本的に同じことが続きますが、今回はパイプの代わりにスラッシュを使用しています。
パイプとスラッシュの両方をバックスラッシュでエスケープしました。

于 2013-11-15T07:47:08.927 に答える
1

私は2つの分割を行うだけです:

string = 'class1|class2|class3 path/to/resource'

p string.split.first.split('|') #=> ["class1", "class2", "class3"]
于 2013-11-15T08:04:47.943 に答える