3

我有一个很长的正则表达式,包含(?:\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}$
4

1 回答 1

1

我不确定您所说的“一位小数”是什么意思,因为您的第一个失败示例似乎是一个整数,但您可以尝试:

^(?!\$?\d+(?:\.\d+)?$).+$

根据您的评论,我认为负面的回顾可能更多是您正在寻找的:

(?<!\$?\d+(?:\.\d+)?)
于 2013-03-23T02:37:42.143 回答