我有一个包含(?:\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}$
(?:\S+ ){0,4}
会捕获Asmol 2.5
,然后我的建议使用回顾后发现了2.5
并报错。我认为你试图仅通过正则表达式实现过多的功能。你可能需要包含更多的环视来实现这一点,但它会变得非常复杂,而且你当前的正则表达式已经很复杂了。 - Kenneth K.