0

私は、ユーザーが引数とともに関数名で引数を指定できるようにする CLI アプリに取り組んでいます。xgettext実際には、次のようにと同じ構文を使用しています。

--keywords=__,dgettext:2,dcgettext:2,ngettext:1,2,dpgettext2:2c,3

これを次のような配列に分解する正規表現を理解する必要があります。

['__', 'dgettext:2', 'dcgettext:2', 'ngettext:1,2', 'dpgettext2:2c,3'];

どうすればできますか(たとえば、Javascriptで)?

これが私がこれまでに持っているものです:

(((?!([0-9\s,])).|^)[a-zA-Z_]+[A-Za-z0-9_]*[:]*([0-9]*[a-z]*,*)*)

明らかにこれには問題があります。毎回カンマもキャプチャしています。どうすればそれを除外できますか?

4

3 に答える 3

2

次のような正規表現を使用して、正の先読みで正規表現を使用できます。

,(?=\w+gettext)

ワーキングデモ

于 2015-03-16T20:13:40.480 に答える
0

@Fedeの回答に基づいて、私が必要としていたことを正確に行う完全なスニペットを次に示します。

// The last keyword is invalid - it begins with a number,
// which is not allowed, so it should not considered a separate keyword
var keywords = "__,dgettext:2,dcgettext:2,ngettext:1,2,dpgettext2:2c,3,__,_n,_,2";
keywords.split(/,(?=[a-z_]+\w*)/gi);

それが行うことは、有効なキーワードが後に続くコンマを探し、それに基づいて文字列を配列に分割することです。これはまさに私が必要としていたものです。

于 2015-03-18T06:24:09.383 に答える