使用Python正则表达式切换单词的顺序

使用Python正则表达式切换单词的顺序,python,regex,Python,Regex,我找到了将YYYY-MM-DD转换为DD-MM-YYYY的代码 b = re.sub(r'(\d{4})-(\d{1,2})-(\d{1,2})', '\\3-\\2-\\1', "2004-05-16") 因此,我试图将字符串“hey you man”转换为“man hey you”,但无法实现。我能够将字符串分组为: b = re.findall(r'(\w+)', 'hey you man') 但当我执行以下操作时,我会得到一个错误: b = re.sub(r'(\w+)','\\3\

我找到了将YYYY-MM-DD转换为DD-MM-YYYY的代码

b = re.sub(r'(\d{4})-(\d{1,2})-(\d{1,2})', '\\3-\\2-\\1', "2004-05-16")
因此,我试图将字符串“hey you man”转换为“man hey you”,但无法实现。我能够将字符串分组为:

b = re.findall(r'(\w+)', 'hey you man')
但当我执行以下操作时,我会得到一个错误:

b = re.sub(r'(\w+)','\\3\\2\\1',"hey you man")

另外,我对非正则表达式解决方案不感兴趣。我可以使用其他方法切换字符串,我只是对学习正则表达式感兴趣。

您需要在三个单独的组中捕获要切换的单词(在您的情况下,您只有一个捕获组);这里的
\1
\2
\3
是按顺序引用捕获的组(括号中)的反向引用,即
\1-嘿
\2-你
\3-男人
;通过在替换中对这些反向引用重新排序,将在结果中对单词重新排序:

re.sub(r'(\w+) (\w+) (\w+)', r'\3 \1 \2',"hey you man")
# 'man hey you'

您需要在三个单独的组中捕获要切换的单词(在您的情况下,您只有一个捕获组);这里的
\1
\2
\3
是按顺序引用捕获的组(括号中)的反向引用,即
\1-嘿
\2-你
\3-男人
;通过在替换中对这些反向引用重新排序,将在结果中对单词重新排序:

re.sub(r'(\w+) (\w+) (\w+)', r'\3 \1 \2',"hey you man")
# 'man hey you'

非常感谢你的帮助。我真的很感激。为什么在日期示例中有两个\\,而在您的示例中只有1个\\?我用
r
将其声明为原始字符串,因此\不被视为转义。在日期示例中,前面没有
r
,因此需要双斜杠。@Psidom您能分享一份关于此的文档吗?非常感谢您的帮助。我真的很感激。为什么在日期示例中有两个\\,而在您的示例中只有1个\\?我用
r
将其声明为原始字符串,因此\不被视为转义。在日期示例中,前面没有
r
,因此需要双斜杠。@Psidom您能分享一份关于此的文档吗?