this Regex(\w*)\s*\([(\w*),]*\)
の目的は、関数名とその引数を取得することです。例えば正規表現による式の名前と引数の解析
、f1 (11,22,33)
与えられた正規表現は、四つの要素キャプチャする必要があります。この正規表現と間違って何
f1
11
22
33
を?あなたがここsplit
でそれを行うことができます
this Regex(\w*)\s*\([(\w*),]*\)
の目的は、関数名とその引数を取得することです。例えば正規表現による式の名前と引数の解析
、f1 (11,22,33)
与えられた正規表現は、四つの要素キャプチャする必要があります。この正規表現と間違って何
f1
11
22
33
を?あなたがここsplit
でそれを行うことができます
はjavascript
var ar = str.match(/\((.*?)\)/);
if (ar) {
var result = ar[0].split(",");
}
お返事ありがとうございます、あなたの答えは私に近いです。https://regex101.com/r/pX0nQ6/7 – ps0604
上記のコメンターが言っているようないくつかの事が
:-)正規表現のために懸命にあり、 '*'はあまりにもゆるいことがあります。ゼロ以上を意味します。したがってfoo(,,)
も一致します。あまりよくない。
(\w+)\s*\((\w+)(?:,\s*(\w+)\s*)*\)
これは、私が思うところに近いです。それを打ち破ろう。
\w+ <-- The function name, has to have at least one character
\s* <-- zero or more whitespace
\( <-- parens to start the function call
(\w+) <-- at least one parameter
(?:) <-- this means not to save the matches
,\s* <-- a comma with optional space
(\w+) <-- another parameter
\s* <-- followed by optional space
これは、Pythonからの結果である:
>>> m = re.match(r'(\w+)\s*\((\w+)(?:,\s*(\w+)\s*)*\)', "foo(a,b,c)")
>>> m.groups()
('foo', 'a', 'c')
しかし、どのようなこのようなものについて:
foo(a,b,c
d,e,f)
?ええ、それは正規表現で速くなり、より豊かな構文解析ツールに移行します。
引数の空白をキャプチャしているようです。また、 '(\ w *)'は長さがゼロのシーケンス(空白)を示すので、この正規表現はカンマのリストとして引数として取り込むことができます。関数の最後の引数は、カンマの後に続く必要があります。最後の引数に別のグループを追加する必要があります。 – Evert
あなたは '[]'の中で特殊文字を使うことはできません。また、これに正規表現を使用しないでください – hop
文字セット内でグループ化括弧を使用することはできません。 – Evert