这是我目前的正则表达式:
^(?:7+|9+8?|8)\s*$
我需要一个与以下字符串匹配的正则表达式模式:
'7'
'777777777777777'
'9'
'99999999999999999999'
'9999999999999998'
'8'
'7 '
'777777777777777 '
'9 '
'99999999999999999999 '
'9999999999999998 '
'8 '
也就是说,我需要一个匹配任何但只有以下内容的正则表达式:
我相信我的正则表达式适用于此。有没有更好的正则表达式呢?
我在SAS中使用我的正则表达式,我认为它与Perl口味非常相似。
答案 0 :(得分:2)
你的正则表达式很好。您可能认为它不是最佳,因为多次交替看起来只是简单或笨重,但看起来就像他们所做的那样。
简单就好了。添加替换,尤其是在使用^
和/或$
时,几乎不会降低正则表达式的速度,因为如果不需要它们,则不会检查它们。如果您使用正则表达式^(a*|b*)$
且字符串为aaaaa
,则甚至不会检查b*
替换。如果您的字符串为cccc
,则会检查第一个c
是a
还是b
,因此只有一个字符匹配才能获得b*
部分。
减慢正则表达式的作用是充分利用*
和+
之类的量词,类似(b*?a*)*
(匹配单个b
需要27个步骤)。你的正则表达式没有那样,它是好的和有效的。