正则表达式匹配一个不是的数字
Regex match a number the is not
我正在尝试对自定义文件格式进行语法分析。
我只想突出显示数字,但数字可以采用多种格式。尽管数字不应该出现在变量名或某种单词中。
为简单起见,假设我正在寻找任意数量的这种类型
[0-9][\.0-9]*
我希望只保留数字而不是填充。然而,唯一的问题是这比我想要的要多。
这些是我正在寻找的一些失败案例
避免 variable123 or variable_123name or _123_
,
其中一些可接受的情况是 |123| or +123+ 3 123% ext... 11 2123 123% 0.12 1.1.3.4.4 12 1 23452 23423|
ext...
我基本上只是想摆脱不必要的变量突出显示,同时在更轻松的情况下保持数字突出显示,这些数字可以在列表中,周围有许多其他随机字符。我已经尝试使用来自该站点的几个示例进行前瞻,但没有提出好的解决方案。我有一些失败标准,我希望突出显示标准宽松。有很多数字,但唯一需要摆脱的重要情况是数字被嵌入到 id 标签中,通常像变量 decleration。这意味着字符串中不应包含字母 [a-zA-Z]
以及下划线 [_a-zA-Z]
并尝试使用此模式通过查找消除这些情况。虽然这并没有解决我的问题。 Here is a link to my problem (regex101.com).
更新
重新看了你的问题后,应该可以这样解决
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-9][\.0-9]*\>
我正在尝试对自定义文件格式进行语法分析。 我只想突出显示数字,但数字可以采用多种格式。尽管数字不应该出现在变量名或某种单词中。
为简单起见,假设我正在寻找任意数量的这种类型
[0-9][\.0-9]*
我希望只保留数字而不是填充。然而,唯一的问题是这比我想要的要多。
这些是我正在寻找的一些失败案例
避免 variable123 or variable_123name or _123_
,
其中一些可接受的情况是 |123| or +123+ 3 123% ext... 11 2123 123% 0.12 1.1.3.4.4 12 1 23452 23423|
ext...
我基本上只是想摆脱不必要的变量突出显示,同时在更轻松的情况下保持数字突出显示,这些数字可以在列表中,周围有许多其他随机字符。我已经尝试使用来自该站点的几个示例进行前瞻,但没有提出好的解决方案。我有一些失败标准,我希望突出显示标准宽松。有很多数字,但唯一需要摆脱的重要情况是数字被嵌入到 id 标签中,通常像变量 decleration。这意味着字符串中不应包含字母 [a-zA-Z]
以及下划线 [_a-zA-Z]
并尝试使用此模式通过查找消除这些情况。虽然这并没有解决我的问题。 Here is a link to my problem (regex101.com).
更新
重新看了你的问题后,应该可以这样解决
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-9][\.0-9]*\>