以最糟糕的方式使用正则表达式

时间:2013-06-02 05:14:03

标签: regex

给定一个像“4> 2”这样的字符串,一般来说“X> Y”有一种方法可以创建一个正则表达式,如果条件为真,则接受字符串吗?

2 个答案:

答案 0 :(得分:3)

你做不到。作为一个反例,你必须能够接受

10 > 1

一般

10^n > 10^m

表示n>米这将需要计数,正常的正则表达式无法做到。也就是说,如果你有更强大的正则表达式,就像某些语言一样,你可能会这样做。

答案 1 :(得分:0)

你可以,但它需要一些正则表达式(比如对于unsigned short 0 .. 65535),数字不是以0开头的

检查尺寸,如果

/^(\d{2}>\d{1})|(\d{3}>\d{2})|(\d{4}>\d{3})|(\d{5}>\d{4})$/

然后确定,否则检查相同的长度,如果

/^(\d{1}>\d{1})|(\d{2}>\d{2})|(\d{3}>\d{3})|(\d{4}>\d{4})|(\d{5}>\d{5})$/

then (same length) check digit by digit, if

/^(9.*?>[1-8])|(8.*?>[1-7])|(7.*?>[1-6])|(6.*?>[1-5])|(5.*?>[1-4])|(4.*?>[1-3])|
  (3.*?>[1-2])|(2.*?>1)/

else (2nd digit) if

/^(.9.*?>.[1-8])|(.8.*?>.[1-7])|(.7.*?>.[1-6])|(.6.*?>.[1-5])|(.5.*?>.[1-4])|(.4.*?>.[1-3])|
  (.3.*?>.[1-2])|(.2.*?>.1)/

 etc.. for 3rd to 5th digit