正则表达式查找C样式注释

时间:2015-10-02 21:46:18

标签: python regex

我正在尝试编写一个正则表达式来查找Java源文件中的C样式头文件。目前我正在用Python进行实验。

这是我的源代码:

import re

text = """/*
       * Copyright blah blah blha blah 
       * blah blah blah blah 
       * 2008 blah blah blah @ org
       */"""

print
print "I guess the program printed the correct thing."

pattern = re.compile("^/.+/$")

print "-----------"
print pattern 

pos = 0
while True:
    match = pattern.search(text, pos)
    if not match:
        break
    s = match.start()
    e = match.end()
    print '   %2d : %2d = "%s"' % (s, e-1, text[s:e])
    pos = e 

我正在尝试编写一个简单的表达式,它只是在正斜杠和另一个正斜杠之间寻找任何东西。我可以在以后使正则表达式更复杂。

有谁知道我哪里出错了?我正在使用正斜杠的点元字符,一个或多个东西的加号,以及结尾的美元符号。

2 个答案:

答案 0 :(得分:2)

对于初学者,您需要指定DOTALL标志,因为默认情况下,.字符与换行符不匹配。

尝试:

pattern = re.compile("^/.+/$", re.DOTALL)

答案 1 :(得分:2)

我认为你不应该主持(使用' ^'' $')这场比赛。

其次,我认为正则表达式应该是void getNumber(int &x, int &y) { cout << "Please enter two values" << endl; cin >> x >> y; } ,它匹配以斜杠开头的字符串(的一部分),后跟零个或多个非斜杠字符,然后以斜杠结束。

即便:

r"/[^/]*/"

请注意,注释不会从字符串的开头开始,而是正则表达式很好地发现它。