我想截取以\*#\*
后跟0到7之间的数字
以##
类似于\*#\*0##
但我找不到这个
的正则表达式答案 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]##$')