我试图根据某些条件匹配某些数字。
我试图使用负面的lookbehind和lookahead如下面来测试cc的条件。但它只省略了一个" 0"在我的测试样本中。
\d{1,4}(?!cc)
和我的测试样本:
100.2km/h
3000cc,
$2/km
我需要匹配100.2,并且不应该匹配2和3000 ..
答案 0 :(得分:2)
答案 1 :(得分:1)
你可以试试这个正则表达式:
(?<!\$)(\d+(?:\.\d+)?)(?=km\/h)
检查号码前是否有$ $,并且号码后面必须有km/h
。对于数字匹配,我正在考虑使用(\.\d+)?
您也可以使用锚点^
和$
来匹配整个字符串(如果需要)。
答案 2 :(得分:1)
除了@MacroMan的答案之外,您还可以将数字包含在负面背后隐藏中,以确保仅匹配&#34;整体&#34;数:
(?<![\$\d])(\d+\.?\d+)(?=km\/h)
答案 3 :(得分:0)
如果您正在尝试编写一般正则表达式来查找符合条件的文本中的数字,那么前瞻和后瞻是一种合理的方法。诀窍是要注意负面的后视必须匹配$
和数字,否则它只会从数字的第二个数字开始匹配。所以我认为您正在寻找的解决方案是:
(?<![$.]|\d)([\d.]+)(?=km\/h)