2010-02-16 57 views
11

我正在嘗試使用正則表達式來查找以等號(=)開頭的所有子字符串,並以分號(;)結尾,中間有任意數量的字符。它應該是這樣的=*;帶有=和a的正則表達式;

出於某種原因,等於沒有註冊。是否有某種讓正則表達式注意到我的等號的轉義字符?

我在爪哇工作,如果這對這個問題有任何方向。

回答

17

這可能是你在找什麼。您需要指定要應用星號的字符集或通配符。

"=([^;]*);" 

您還可以使用不願意量詞:

"=(.*?);" 

使用你現在有組括號。我相信第一組是整個比賽,group[1]是在括號內找到的組。

代碼可能看起來像:

Regex r = new Regex("=([^;]*);"); 
Match m = r.Match(yourData); 
while (m.Success) { 
    string match = m.Groups[1]; 
    // match should be the text between the '=' and the ';'. 
} 
+0

這引起了我什麼,我一直在尋找,但有可能才發現那些分隔符之間有什麼?換句話說,我想得到=和之間的內容;而沒有實際上將它們包括在表達中。 謝謝 – chama

+1

如果你想在你想找到的值附近添加parens,你可以使用Matcher的group()方法來檢索parens中的位。 – mkb

+0

我如何使用group()方法來做到這一點? – chama

7

這看起來對「任何數量的=跡象,包括0」

=*; 

如果你想「=後跟任意數目的其它字符」你想

=.*; 

不過,這貪婪地匹配 - 如果你想偷懶匹配(使之停止一組,當找到下一個分號),你可能會想:

=.*?; 
1

您提供的正則表達式匹配;,===;,...,================;=.*;(或=.*?;如果不需要非貪心)如何?

1

喜歡的東西= *;