import re
str = input()
res = re.match(r'(\d*[-]?)*',str)
print(res.group())
( 和 ):这两个括号用于将模式的一部分分组。在这个模式中,括号的作用是将 \d*[-]? 这个子模式分组。

\d*:这部分表示匹配零个或多个数字,与之前解释的一样。

[-]?:这部分表示匹配一个可选的-,与之前解释的一样。

*:这个星号表示匹配前面的分组零次或多次。因此,(\d*[-]?)* 表示匹配前面的分组(包含一个数字和可选负号)零次或多次。
代码使用 re.match() 函数来尝试将正则表达式模式应用于输入的字符串 str。re.match() 函数会尝试从字符串的开头进行匹配,如果匹配成功,则返回一个匹配对象,否则返回 None。
在正则表达式中,你可以使用括号来创建一个或多个分组。当使用 re.match() 或 re.search() 函数找到匹配项后,你可以使用 group() 方法来获取匹配的内容。

如果你的模式中没有使用分组,那么 group() 将返回整个匹配的字符串。

例如,在你的代码中,res 是通过 re.match() 函数返回的匹配对象。如果匹配成功,你可以使用 res.group() 来获取与模式匹配的字符串。

注意,如果没有找到匹配项,调用 group() 方法将引发一个 AttributeError 错误。