正则表达式仅在函数上方获取一个 c 风格的多行注释
regex to grab only one c-style multi-line comment immediately above a function
我正在尝试使用正则表达式获取某些 c 代码 中位于任意函数之上的多行注释。只有紧挨着函数的注释和函数代码本身才是我感兴趣的。注释肯定会有一个“\abc” 最后(见片段)。我也不太关心函数下面是否有更多代码或文本。在函数后面包含一些text/noise的解决方案也是可以的。
我想通过 惰性评估 获取函数上方的注释,但它还没有完全起作用。
这是我的最小示例
import re
snippet = """
/*=================================================*
* THIS IS NOT THE COMMENT I WANT
*===============================================*/
/* THIS IS THE COMMENT I WANT.
* It should be able to have special characters like /,*.
* \abc
*/
TEST(foo,bar){
...
}
"""
pattern = re.compile(r"(\/\*.)?\abc.*", re.DOTALL)
search = pattern.search(snippet)
match = search.group(0)
print(match)
输出
\abc
*/
TEST(foo,bar){
...
}
期望的输出
/* THIS IS THE COMMENT I WANT.
* It should be able to have special characters like /,*.
* \abc
*/
TEST(foo,bar){
...
}
/\*((?!\*/).)+\abc.*
这不是最易读的,但它有效。它显示:/*
然后 \abc
然后所有内容,但是在匹配 \abc
之前你不能匹配 */
。或者更准确地说,/*
然后是一些不属于 */
的字符,然后是 \abc
,然后是所有字符。
我正在尝试使用正则表达式获取某些 c 代码 中位于任意函数之上的多行注释。只有紧挨着函数的注释和函数代码本身才是我感兴趣的。注释肯定会有一个“\abc” 最后(见片段)。我也不太关心函数下面是否有更多代码或文本。在函数后面包含一些text/noise的解决方案也是可以的。
我想通过 惰性评估 获取函数上方的注释,但它还没有完全起作用。
这是我的最小示例
import re
snippet = """
/*=================================================*
* THIS IS NOT THE COMMENT I WANT
*===============================================*/
/* THIS IS THE COMMENT I WANT.
* It should be able to have special characters like /,*.
* \abc
*/
TEST(foo,bar){
...
}
"""
pattern = re.compile(r"(\/\*.)?\abc.*", re.DOTALL)
search = pattern.search(snippet)
match = search.group(0)
print(match)
输出
\abc
*/
TEST(foo,bar){
...
}
期望的输出
/* THIS IS THE COMMENT I WANT.
* It should be able to have special characters like /,*.
* \abc
*/
TEST(foo,bar){
...
}
/\*((?!\*/).)+\abc.*
这不是最易读的,但它有效。它显示:/*
然后 \abc
然后所有内容,但是在匹配 \abc
之前你不能匹配 */
。或者更准确地说,/*
然后是一些不属于 */
的字符,然后是 \abc
,然后是所有字符。