Regex+;Python-将多个命令转换为一个或更少的命令

Regex+;Python-将多个命令转换为一个或更少的命令,python,regex,Python,Regex,有人知道如何将以下命令转换为一个或更少的命令吗 variable = re.search("[a-zA-Z0-9]+[a-zA-Z0-9\-' ]+[a-zA-Z0-9]+", variable).group(0) variable = re.sub(" {2,}", " ", variable) variable = re.sub("'{2,}", "'", variable) variable = re.sub("\-{2,}", "-", variable) 亲切问候, 玛丽安这是一个开

有人知道如何将以下命令转换为一个或更少的命令吗

variable = re.search("[a-zA-Z0-9]+[a-zA-Z0-9\-' ]+[a-zA-Z0-9]+", variable).group(0)
variable = re.sub(" {2,}", " ", variable)
variable = re.sub("'{2,}", "'", variable)
variable = re.sub("\-{2,}", "-", variable)
亲切问候,

玛丽安这是一个开始:

variable = re.search("[a-zA-Z0-9]+[a-zA-Z0-9\-' ]+[a-zA-Z0-9]+", variable).group(0)
variable = re.sub("([ '\-])\\1+", "\\1", variable)

我想如果你发布了你想要匹配的字符串,这会有很大帮助。例如,我正在尝试匹配“Blabla的bla-bla1345”之类的内容。只允许使用字母数字。空格,,,,但不是连续的,也不是在字符串的开头或结尾。就像一个符咒。谢谢!:)顺便说一句,你能解释一下这个部分吗?“(['\-]\\1+”,“\\1”?
\1
(或者
\\1
,因为我必须双重转义它)是对第一个捕获组的引用。这就是为什么我将“['\-]”放在括号中,使其成为一个捕获组。现在,我可以使用\1在任何地方(在我的比赛和替换中)重复它。我可以用\2引用我定义的第二组(如果我有一个),用\3引用第三组,等等。此外,由于您是堆栈溢出新手,我将提醒您将此问题标记为已回答。:)这里的人不喜欢提问者留下未回答的问题,如果你的回答率较低,将来可能不会回答你的问题。:)谢谢你的时间:)另外,我知道我听起来有点傻,但我如何将我的问题标记为已回答?更准确地说,将这个答案标记为已接受;它是左边的绿色复选标记图标。顺便说一下,您可以使用Python的原始字符串来减少反斜杠:
re.sub(r“(['\-])\1+,r“\1”,variable)