Python正则表达式匹配#后跟0-7后跟##

时间:2009-05-20 17:12:09

标签: python regex

我想截取以\*#\*

开头的字符串

后跟0到7之间的数字

##

结尾

类似于\*#\*0##

但我找不到这个

的正则表达式

5 个答案:

答案 0 :(得分:7)

假设你想在之前和之后允许一个#,我会这样做:

r'^(\#{1}([0-7])\#{2})'

重要的是要注意Alex's正则表达式也匹配

之类的内容
###7######
########1###

可能或不重要。

上面的正则表达式匹配以#[0-7] ##开头的字符串,并忽略字符串的结尾。如果你希望它只匹配整条线,你可以在最后添加 $

第一个反向引用为您提供了整个#< number> ##字符串,第二个反向引用为您提供#内的数字。

答案 1 :(得分:4)

上述示例均未考虑*#*

^\*#\*[0-7]##$

通过:*#* 7 ##

失败:*#* 22324324 ##

失败:*#3232#

^字符将匹配字符串的开头,\ *将匹配单个星号,在此示例中#字符不需要转义,最后[0-7]将仅匹配单个字符之间的单个字符0和7。

答案 2 :(得分:1)

r'\#[0-7]\#\#'

答案 3 :(得分:1)

正则表达式应该像^#[0-7] ## $

答案 4 :(得分:1)

据我所知,你需要的最简单的正则表达式是:

rex= re.compile(r'^\*#\*([0-7])##$')

{1}构造是多余的。 执行rex.match(或rex.search后,但此处不需要),匹配对象的.group(1)包含给定的数字。

编辑:整个匹配的字符串始终以match.group(0)的形式提供。如果您只需要完整的字符串,请删除正则表达式中的所有括号:

rex= re.compile(r'^\*#\*[0-7]##$')