一个可以找到所有注释的正则表达式,python

时间:2012-05-29 07:59:47

标签: python regex comments

我正在python中编写一个编译器(用于练习语言),我希望通过空格或注释将文本拆分为标记。我尝试了/\*.*?\*/|/{2}.*?\n|\s:fisr正则表达式模式应该以{{1​​}}或/** text */的形式提出好评,可能是multyline。第二个正则表达式应该以{{1​​}}的形式对以新行字符结尾的注释进行细化。最后一个找到空格。

我的问题:

我检查了我的正则表达式here,它看起来很棒,但是当我打电话时

/* text */

它返回一个只包含一个元素的列表,这是我正在解析的整个文本。

关于我哪里出错的任何想法?谢谢!

谢谢!

1 个答案:

答案 0 :(得分:3)

问题不在于正则表达式,而在于split。您正在调用split method of an str,它不会被正则表达式拆分。它通过子串分割字符串。而是使用re.split

>>> code = open('file').read()
>>> code
'/* comment */\ntext1\n// comment\n\ntest2\n\ntext3 // comment\n\ntext4 /* comment */\n'
>>> import re
>>> re.split
<function split at 0x10d9c6320>
>>> re.split('/\*.*?\*/|\/{2}.*?\n|\s', code)
['', '', 'text1', '', '', 'test2', '', 'text3', '', '', 'text4', '', '', '']

More information on python re module