2017-06-16 98 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]*\>