有没有比我的正则表达式更好的解决方案

时间:2013-11-29 22:26:48

标签: regex optimization

我已经花了一些时间试图找出this website上的问题并且我最终发现了一个正如我要求做的那样的正则表达式

练习是:

Enter a regexp that matches all the items in the first column 
(positive examples) but none of those in the second (negative examples). 
When you press "submit", you will see what matched.

Positive    Negative
pit         pt
spot        Pot
spate       peat
slap two    part
respite

我找到的答案是

^\w?.*p[a-z ?]t\w?.*$

我发现的是,所有积极的词语都有p_t的形式。

我将其与p[a-z ?]t相匹配,然后^\w?.*匹配p之前的所有字母和\w?.*$以匹配t之后的任何字母数字字符

我想知道的是有更好的方法来回答这个问题吗?

3 个答案:

答案 0 :(得分:5)

这是一个更符合这些标准的简单:

.*p.t.*

这匹配任何包含p后跟一个字符的字符序列,后跟t。只要在区分大小写模式下运行,就不会匹配Pot

当然,如果你不需要匹配整个字符串(只是其中的一部分),这甚至更简单:

p.t

答案 1 :(得分:1)

这是更简单的一个!!

 ^.*p[a-z  ?]t(\w+)?

答案 2 :(得分:0)

这是我能写的最短的正则表达式:

^.*p.t\w*
相关问题