2017-06-16 145 views
0

我正在嘗試獲取自定義文件格式工作的語法分析。 我正在尋找突出顯示只有數字,但數字可以在幾種類型的格式。雖然這些數字不應該是某種變量的名稱或者單詞。正則表達式匹配數不是

爲了讓事情變得簡單可以讓我說我正在尋找這種類型的任何數字 [0-9][\.0-9]*而我期待的只是數字而不是填充。然而,唯一的問題是,這個問題比我想要的要多得多。 論文都是一些失敗,我希望 情況下避免variable123 or variable_123name or _123_, 其中一些可以接受的情況下,是|123| or +123+ $123 123% ext... 11 2123 123% 0.12 1.1.3.4.4 12 1 23452 23423|轉...

我基本上看,同時保持數字只有擺脫了不必要的變量突出的在更輕鬆的情況下突出顯示,這些數字可以在許多其他隨機字符包圍的列表中。我已經用這個網站上的幾個例子試用了lookahead,但是沒有找到好的解決方案。我有一些失敗的標準,我希望寬鬆的標準。有很多數字,但唯一需要擺脫的重要情況是數字嵌入到標記標記中,通常就像變量變形。這意味着字符串中不應有字母[a-zA-Z]以及沒有下劃線[_a-zA-Z],並試圖使用此模式來消除使用查找的情況。雖然這並沒有解決我的問題。 Here is a link to my problem (regex101.com).

+0

看到這個https://stackoverflow.com/questions/2078915/ a-regular-expression-to-exclude-a-word-string –

回答

1

更新

重新閱讀您的問題後,應該能與此
https://regex101.com/r/K6fQXy/1

(?<!\w)\d[.\d]*(?!\w)

格式化完成

(?<! \w) 
\d [.\d]* 
(?! \w) 

或者,如果你不想匹配的數字後尾隨點,這一個
https://regex101.com/r/K6fQXy/2

(?<!\w)\d(?:\.?\d)*(?!\w)


您只需將自己的正則表達式。
使用斷言來限定要突出顯示的數字。

https://regex101.com/r/XwDEkj/1

(?<=\|)\d+(?=\|)|(?<=\+)\d+(?=\+)|(?<=\$)\d+|\d+(?=%)

格式化

 (?<= \|) 
    \d+ 
    (?= \|) 
    | 
    (?<= \+) 
    \d+ 
    (?= \+) 
    | 
    (?<= \$) 
    \d+ 
    | 
    \d+ 
    (?= %) 
+0

在'vi'中有效嗎? – NetMage

+0

我不知道,vi使用什麼引擎?我記得30年前的vi,它從未更新過嗎? – sln

+0

嗯,它實際上並不是vi,而是vi的精確解釋,答案是否定的。它僅支持一小部分用於解析語法的regex表達式,而我們的編程語言是在內部增長的,所以我想爲它做一個解析器。我很抱歉,雖然我誤導了你的一些例子。有更多的通過案例需要考慮。我將添加這些。 – user2716722

0

如果可用,使用單詞邊界匹配

\<[0-9][\.0-9]*\>