如何读取python正则表达式(?)?:^ |[b_./])[Tt]es

2024-05-17 13:46:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能有点帮助阅读/解释这个正则表达式(Python语法):

(?:^|[b_./-])[Tt]est 

(NoTest在查找测试文件时默认重新使用它作为筛选器)。 Described here in the 'Extended usage' section.

编辑:If you came here due to looking into nose, you may want to look into pytest as an alternative.

我到目前为止的理解: 开放式paren问号冒号是一个“扩展”,即将匹配结果中的字符串中的项排除在字符串中。(从我的角度来看,仅仅是试图理解给定文件名是否满足或失败表达式)意味着我可以忽略它(?)

最后一部分“Tt]est”是指测试或测试。

其余的意思是模糊的。插入符号表示“匹配字符串的开始”,垂直栏表示或,括号中的字符(b、下划线、句点、斜杠、减号)是另一种匹配。换句话说,匹配字符串的起始或5个指定字符中的一个,然后是测试或测试?这意味着字符串“bTest”和“/Test”将匹配(而且它们显然不匹配)。

感谢您对我的模式的解释有任何帮助!


Tags: 文件theto字符串inyouextendedhere
2条回答

非捕获组(?: ... )对正则表达式的匹配没有影响

(?:^|[b_./-])[Tt]est

Regular expression visualization

…所以在一行的开头它会匹配:

^{pr2}$

或文本中任何位置的以下选项之一:

bTest
btest
_Test
_test
.Test
.test
/Test
/test
-Test
-test

(?:...)是一个非捕获组;与(...)相同,但不会产生捕获的组值。它限制|备用组中包含的内容。该组要么匹配字符串的开头,要么匹配字符b_./或{}。在

因此,表达式将为在一行开头包含Test或{}的输入文本生成匹配项,或者如果直接以b开头,以及下划线、点、斜杠或短划线生成匹配项。在

'bTest'/Testdo匹配:

>>> pattern = re.compile(r'(?:^|[b_./-])[Tt]est')
>>> pattern.search('Test').group()
'Test'
>>> pattern.search('Hello bTest').group()
'bTest'
>>> pattern.search('Hello /Test').group()
'/Test'

这个b很令人惊讶,所以我看了一下{a1}。文档缺少反斜杠,不是b匹配,而是\b

^{pr2}$

\b是一个单词边界,任何东西都不是testTest前面的单词字符。这很可能是一个bug;\b不能是字符类的一部分,那里的\b不起作用。相反,它将被视为一个退格字符。在

这个问题是reported to the project3年半前的事了。在

相关问题 更多 >