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

要匹配的Python正则表达式#后跟0-7,后跟##,python,regex,Python,Regex,我想截取以\*\\* 后跟一个介于0和7之间的数字 并以:## 所以类似于\*\*0# 但是我找不到这个的正则表达式r'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ r'^(\#{1}([0-7])\#{2})' 需要注意的是,

我想截取以
\*\\*

后跟一个介于0和7之间的数字

并以:
##

所以类似于
\*\*0#


但是我找不到这个的正则表达式

r'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

r'^(\#{1}([0-7])\#{2})'
需要注意的是,正则表达式还将匹配以下内容

###7######
########1###
这可能重要,也可能不重要

上面的正则表达式匹配以#[0-7]##开头的字符串,并忽略该字符串的结尾。如果您想要匹配,您可以在末端钉上一个$,只要这是整条线


第一个反向引用提供整个####字符串,第二个反向引用提供#内的数字。

上述示例均未考虑*#*

通过:*7##

失败:*22324324##

失败:*3232#


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

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

rex= re.compile(r'^\*#\*([0-7])##$')
{1}
构造是冗余的。 执行
rex.match
(或
rex.search
,但此处不需要)后,match对象的
。组(1)
包含给定的数字

编辑:整个匹配字符串始终可用作
match.group(0)
。如果只需要完整的字符串,请在正则表达式中删除任何括号:

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

我很想逃离“#”。在我阅读文档时,只有在指定了re.VERBOSE或在(?#…)构造中,“#”才是特殊的。是的,但在重新模式中,最好的做法是逐字转义所有正在使用的非字母数字——防止“升级”到可能破坏非转义字母数字的重新模式语言,另外,帮助读者,让他们知道,他们不需要查找某些奇怪的未替换标点字符在RE模式中是否具有特殊意义;-)。抱歉,我要截取的搜索模式中有一个错误,字符串以*#*开头,后跟一个介于0和7之间的数字,以:##结尾,所以类似于*#*0##哇。我想我假设那些*是输入错误的Markdown Syntax真的我需要所有匹配的字符串不仅仅是个位数,而且你的建议非常有用谢谢
rex= re.compile(r'^\*#\*[0-7]##$')