2

我想使用 python 获取 js 文件中多行注释的内容。

我试过这个代码示例

import re
code_m = """
/* This is a comment. */
"""
code_s = "/* This is a comment*/"

reg = re.compile("/\*(?P<contents>.*)\*/", re.DOTALL + re.M) 
matches_m = reg.match(code_m)
matches_s = reg.match(code_s)
print matches_s # Give a match object
print matches_m # Gives None

matches_m得到None. 但matches_s有效。我在这里想念什么?

4

2 回答 2

4

match()仅匹配字符串的开头,search()改为使用。

使用 时match(),就像\A在您的正则表达式的开头有一个字符串锚 ( ) 的隐式开头。

作为旁注,除非您正在使用或在您的正则表达式中并希望它们在行的开头和结尾匹配,否则您不需要该re.M标志。在组合多个标志时,您还应该使用按位 OR(例如)而不是相加。^$re.S | re.M

于 2012-10-30T17:34:30.910 回答
2

re.match测试字符串是否与正则表达式匹配。您可能正在寻找re.search

>>> reg.search(code_m)
<_sre.SRE_Match object at 0x7f293e94d648>
>>> reg.search(code_m).groups()
(' This is a comment. ',)
于 2012-10-30T17:34:41.863 回答