我正在嘗試使用正則表達式來查找以等號(=
)開頭的所有子字符串,並以分號(;
)結尾,中間有任意數量的字符。它應該是這樣的=*;
帶有=和a的正則表達式;
出於某種原因,等於沒有註冊。是否有某種讓正則表達式注意到我的等號的轉義字符?
我在爪哇工作,如果這對這個問題有任何方向。
我正在嘗試使用正則表達式來查找以等號(=
)開頭的所有子字符串,並以分號(;
)結尾,中間有任意數量的字符。它應該是這樣的=*;
帶有=和a的正則表達式;
出於某種原因,等於沒有註冊。是否有某種讓正則表達式注意到我的等號的轉義字符?
我在爪哇工作,如果這對這個問題有任何方向。
這可能是你在找什麼。您需要指定要應用星號的字符集或通配符。
"=([^;]*);"
您還可以使用不願意量詞:
"=(.*?);"
使用你現在有組括號。我相信第一組是整個比賽,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」
=*;
如果你想「=後跟任意數目的其它字符」你想
=.*;
不過,這貪婪地匹配 - 如果你想偷懶匹配(使之停止一組,當找到下一個分號),你可能會想:
=.*?;
您提供的正則表達式匹配;
,===;
,...,================;
。 =.*;
(或=.*?;
如果不需要非貪心)如何?
喜歡的東西= *;
在Java學習正則表達式的極好來源:sun's book about regexp
這引起了我什麼,我一直在尋找,但有可能才發現那些分隔符之間有什麼?換句話說,我想得到=和之間的內容;而沒有實際上將它們包括在表達中。 謝謝 – chama
如果你想在你想找到的值附近添加parens,你可以使用Matcher的group()方法來檢索parens中的位。 – mkb
我如何使用group()方法來做到這一點? – chama