Python 要捕获的正则表达式'*';但不包括评论部分

Python 要捕获的正则表达式'*';但不包括评论部分,python,regex,Python,Regex,我想捕获代码中除注释部分之外的所有*。 注释部分是:(\/\*\[\S\S\]*?\*\/) 我试图排除注释部分中的字符,并搜索前面/后面有0个或更多空格的任何*字符 Regex : [^\/\*[\S\s]*?\*\/\]\s*\*\s* /** * This function is useless * * @return sth */ public void testMe() { int x = 5*4; x*=7; x = x**2; } 它

我想捕获代码中除注释部分之外的所有
*
。 注释部分是:
(\/\*\[\S\S\]*?\*\/)
我试图排除注释部分中的字符,并搜索前面/后面有0个或更多空格的任何
*
字符

Regex : [^\/\*[\S\s]*?\*\/\]\s*\*\s*


/**
 * This function is useless
 *
 * @return      sth
 */
public void testMe() {
    int x = 5*4;
    x*=7;
    x = x**2;
}

它应该匹配
testMe中的所有
*

这可以通过使用捕获组的模式来解决,即
我想要避免什么(我想要什么匹配)

这里的想法是完全忽略正则表达式引擎返回的全部匹配:那是垃圾桶。相反,我们只需要检查捕获组$1,当设置它时,它包含注释之外的星号


这可以通过使用捕获组的模式来解决,即
想要避免什么(想要匹配什么)

这里的想法是完全忽略正则表达式引擎返回的全部匹配:那是垃圾桶。相反,我们只需要检查捕获组$1,当设置它时,它包含注释之外的星号


@user202729
ab*c/*def
应该有两个匹配项。我想你可以快速搜索
/*
及其对应的
*/
,然后过滤掉这些区域中的星号。说真的,请使用合适的解析器,否则没有人会读取你的代码。@MateenUlhaq对
不起作用。“这是一个字符串/***********”
@user202729冒着掉进兔子洞的风险。。。也要过滤掉所有字符串文字:P希望OP试图解析的代码不会比这更复杂。@user202729
ab*c/*def
应该有两个匹配项。我想你可以快速搜索
/*
及其对应的
*/
,然后过滤掉这些区域内的星号。说真的,使用合适的解析器,或者没有人会读你的代码。@MateenUlhaq不适用于
“这是一个字符串/*******/”
@user202729,冒着掉进兔子洞的风险。。。也要过滤掉所有字符串文字:P希望OP试图解析的代码不会比这更复杂。对于
“/*假注释****/”
@triandicator仍然失败,因为它是。@user202729我和你在一起,我们正在进入一个很深的黑兔子洞。如果我们还必须考虑带引号的字符串,那么我们还必须允许转义引号括在带引号的字符串中,并检查正确括起的字符串,等等。有一些表达式可以提供帮助(例如,但最终总会有其他东西出现,它会崩溃。@trian如果您想在字符串中搜索*,您可以在另一个组中捕获字符串并在第二步中处理它们,请参阅更新的-此模式需要替代程序包。我希望,这会有所帮助。对于
“/*假注释****/”仍然失败
@triandiant,因为它。@user202729我同意你的观点,我们正在进入一个很深的黑兔子洞。如果我们还必须考虑带引号的字符串,那么我们还必须允许将引号转义到带引号的字符串中,并检查正确的带引号的字符串,等等。有一些表达式可以提供帮助(例如,但最终总会有其他东西出现,它会崩溃。@TrianDiant如果您想在字符串中搜索*,您可以在另一个组中捕获字符串并在第二步中处理它们,请参阅更新的-此模式需要替代包。我希望,这会有所帮助。
\/\*[\S\s]*?\*\/|(\*+)