1

次のような文字列があります。

test:awesome my search term with spaces

そして、直後の文字列test:をある変数に抽出し、他のすべてを別の変数に抽出したいのでawesome、ある変数とmy search term with spaces別の変数で終わることになります。

論理的には、一致するすべてのものtest:*を別の変数に移動し、最初の の前のすべてを削除し:て、必要なものを残します。

現時点では/test:(.*)([\s]+)/、最初の部分を一致させるために使用していますが、2番目の部分を正しく取得できないようです。

4

3 に答える 3

5

正規表現の最初のキャプチャは貪欲で、使用したためスペースに一致します.。代わりに試してください:

matches = string.match(/test:(\S*) (.*)/)
# index 0 is the whole pattern that was matched
first = matches[1] # this is the first () group
second = matches[2] # and the second () group
于 2013-04-01T19:48:46.640 に答える
4

以下を使用します。

/^test:(.*?) (.*)$/

つまり、 match "test:"、次に一連の文字 (貪欲ではない)、最大 1 つのスペース、および行末までの別の一連の文字です。

于 2013-04-01T19:48:24.800 に答える
0

2 番目の一致の前にも先頭のスペースをすべて削除したいと考えているため、式に \s+ が含まれています。それ以外の場合は、式から \s+ を削除すると、必要なものが得られます。

m = /^test:(\w+)\s+(.*)/.match("test:awesome my search term with spaces")
a = m[1]
b = m[2]

http://codepad.org/JzuNQxBN

于 2013-04-02T14:06:32.433 に答える