如何創建以下問題正則表達式:如何從正則表達式搜索中排除單詞?
我有一個字符串,
name1=value1;name2=value2;.....;
某處,存在一對, "begin=10072011;"
我需要的,正則表達式,從解析字符串all name = value;對,其中的值是一個數字。不過,我想忽略的名字begin
目前,我有以下的正則表達式:
([\\w]+)=([\\d]+);
礦選擇begin
名。我如何將其更改爲不包含begin
?
如何創建以下問題正則表達式:如何從正則表達式搜索中排除單詞?
我有一個字符串,
name1=value1;name2=value2;.....;
某處,存在一對, "begin=10072011;"
我需要的,正則表達式,從解析字符串all name = value;對,其中的值是一個數字。不過,我想忽略的名字begin
目前,我有以下的正則表達式:
([\\w]+)=([\\d]+);
礦選擇begin
名。我如何將其更改爲不包含begin
?
(?!begin)\b(\w+)=(\d+);
這使用負先行,因此,如果字符串以「開始」啓動時,它會不匹配。 \b
是必要的,以便正則表達式不會跳過「b」並匹配「egin = ...」。
請注意,當描述正則表達式時,您應該只使用單個反斜槓進行轉義,但對於某些語言,您將需要使用雙反斜槓來反轉反斜槓。
這應做到:
\b(?!begin=)(\w+)=(\d+)\b
由於非晶碳++字符串字面它應該是這樣的:
"\\b(?!begin=)(\\w+)=(\\d+)\\b"
\b
是word boundary;你用它來確保你匹配整個單詞(因爲「單詞」是在正則表達式中定義的;請仔細閱讀該頁面)。例如,如果沒有第一\b
的正則表達式將正確不匹配
begin=1234 // OK
...但那就跳到一個位置和匹配:
egin=1234 // oops!
我認爲(?<=begin=)\d+(?=;)
將是一個更好的選擇。
如果您將所有信息保存爲XML格式,則工作將比現在容易得多。
在任何情況下,我都不會同意這個答案,但Qt的'QRegExp'風格似乎不支持lookbehinds。 ([參考](http://doc.trolltech.com/latest/qregexp.html#assertions)) –
謝謝!是的 - 使用C++字符串的雙斜槓 – Olympian