2011-07-20 58 views
0

我一直在提取字符串中的正則表達式值的問題。我有一個字符串與幾個正則表達式,我需要得到每個表達式匹配的值。但事情是,它沒有正確地返回最後一場比賽。例如:Vb.Net - 有問題提取通配符值

正則表達式:I play (\S+.*?) and (\S+.*?)

字符串:我彈吉他和低音

程序將返回第一個表達式的值作爲「吉他」,但它的返回第二個表達式的值是「the」而不是「低音」。有沒有辦法來解決這個問題?

回答

2

嘗試:I play (\S+.*) and (\S+.*)

+0

它的工作,謝謝。 – Walker

1

那麼,你要求使用.*?的最小長度的比賽,所以你去。

它適用於第一組becase and是一個錨點。對於第二組,沒有錨點,因此最小匹配。

嘗試增加串標誌的結束作爲錨:I play (\S+.*?) and (\S+.*?)$

+0

嗯,但問題是,我需要爲這兩個正則表達式使用相同的模式,它們不能不同。 – Walker

+0

@Leonardo但他們是一樣的。標記屬於整個正則表達式,而不屬於第二組。你不會說第二組與第一組不同,因爲它的前面有「and」,而第一組在前面有「play」,對嗎? – GSerg

+0

問題是我不知道這些正則表達式會出現在哪裏,程序會決定把它們放在哪裏,所以我不會知道在哪一個放置$ – Walker

0

嘗試這種情況:I play (\S+.+) and (\S+.+)

+0

這有點幫助,但是我還沒到。正則表達式不匹配,如果我只在「play」和「end」之間有一個字符(我需要它與最後一個非空白字符匹配任何東西) – Walker