我有一个包含(?:\S+ ){0,4}
那应该匹配:(它已经正确地这样做了)
2 Terry White
Tramal 100
Asmol 2.5
2.5%
或与之匹配的任何内容,除了一个小数或价格。
它不应该匹配:(我不知道如何做这个例外)
870
6.75
$17.60
这甚至可能吗?
感谢大家的意见。对于那些好奇的人来说,这是其中最短的“长正则表达”之一(你可以在最后找到)
^ {0,5}(\d{4}[A-Z]) +((?:\S+ )+(?: {0,10}K\+)?) *(\.\.|\d+) +(?:[A-Z#\*] *)?(\.\.|\d+(?:\.\d{1,4})?) +(?:[ab] *)?((?:\S+ ){0,4}) *([A-Z]{2}) {0,10}$
答案 0 :(得分:1)
我不确定“单个小数”是什么意思,因为你的第一个失败的例子似乎是一个整数,但你可能会尝试:
^(?!\$?\d+(?:\.\d+)?$).+$
根据您的评论,我认为负面的观察可能更多地是您正在寻找的东西:
(?<!\$?\d+(?:\.\d+)?)