我想使用python找到字符串的所有docblock。 我的第一次尝试是这样的:
b = re.compile('\/\*(.)*?\*/', re.M|re.S)
match = b.search(string)
print(match.group(0))
这很有效,但是你会注意到自己:它只打印出1个docblock,而不是全部。
所以我想使用findall函数,它表示会输出所有匹配项,如下所示:
b = re.compile('\/\*(.)*?\*/', re.M|re.S)
match = b.findall(string)
print(match)
但我从来没有得到任何有用的东西,只有这些类型的数组:
[' ', ' ', ' ', '\t', ' ', ' ', ' ', ' ', ' ', '\t', ' ', ' ', ' ']
文档确实说它会返回空字符串,但我不知道它是如何有用的。
答案 0 :(得分:2)
您需要在捕获组中移动quatifier:
b = re.compile('\/\*(.*?)\*/', re.M|re.S)
答案 1 :(得分:1)
为了扩展Rohit Jain的(正确的)答案,使用限定符在之外的括号中,你会说“匹配(非贪婪)parens中任何一个字符的数字,并且抓住那个角色“。换句话说,它将匹配“”或“aaaaaa”,但在“abcde”中它只匹配“a”。 (因为它不贪婪,即使在“aaaaaa”中也只能匹配单个“a”)。通过在parens中移动限定符(即(.*?)
而不是之前的那个),你现在说“匹配任意数量的字符,并捕获所有字符”。
我希望这可以帮助您了解更好的情况。