2013-02-22 213 views
0

我有以下格式此配置文件:解析配置文件值

ALPHA=123456789 
BETA=12345 
GAMMA=123467 

,我想獲得的數值只有BETA(所以12345)使用正則表達式的。 我試圖

BETA=[^a-zA-Z0-9]+([0-9]+) 

,但它不工作。 有什麼建議嗎?

編輯:我正在使用它的JavaScript。我正在寫肉桂延伸。

+0

涉及哪種語言?也許有一些最正確的解決方案比正則表達式 – 2013-02-22 14:19:24

+0

正則表達式語法在實現之間可以高度可變(實際上是擴展)。通常和'\(* regexp * \)'表示匹配。例如,J.T. Blum的回答非常接近可以運作的sed表達式。但是,sputnick的要求是一個很好的要求。你在做什麼語言/程序? – 2013-02-24 14:20:00

+0

我正在使用JavaScript – pattern23 2013-02-25 15:51:17

回答

0

所有你需要的是這樣的:

BETA=(\d+) 

(這是一樣的BETA=([0-9]+)

爲了得到公正的數字部分,使用獲得的第一個捕獲組的語言的方法(在例如,Perl會在匹配成功後包含在$1中)。

您的正則表達式(BETA=[^a-zA-Z0-9]+([0-9]+))搜索BETA =,然後至少一個字符不是字母或數字,然後是一個或多個數字。

這會失敗,因爲您在等號後沒有「至少一個不是字母或數字的字符」。

+0

但它發現整條線!我只想獲得包含BETA – pattern23 2013-02-24 01:03:38

+0

@ pattern23的行中的數值,'\ d +'周圍的括號僅將數字部分放入捕獲組中。您需要使用適當的機制來獲取第一個捕獲組,而不是整個匹配(如果您需要幫助,請更新您的問題以指定您正在使用的語言 - 這樣做的方式取決於語言) 。 – 2013-02-25 08:36:16