Regex 如何将文本从字符串的末尾移动到开头

Regex 如何将文本从字符串的末尾移动到开头,regex,Regex,这里有两行文字是我想修改的 Dorset Rd (5) - 2018-12-14 11-01-05 Crampton Chas - Sandarra Blvd - 2018-12-27 12-31-56 我试着把日期和时间从每行的末尾移到开始,来制作这个 2018-12-14 11-01-05 - Dorset Rd (5) 2018-12-27 12-31-56 - Crampton Chas - Sandarra Blvd 通过阅读本论坛(感谢大家),我想出了以下正则表达式 (^.*)\

这里有两行文字是我想修改的

Dorset Rd (5) - 2018-12-14 11-01-05
Crampton Chas - Sandarra Blvd - 2018-12-27 12-31-56
我试着把日期和时间从每行的末尾移到开始,来制作这个

2018-12-14 11-01-05 - Dorset Rd (5)
2018-12-27 12-31-56 - Crampton Chas - Sandarra Blvd
通过阅读本论坛(感谢大家),我想出了以下正则表达式

(^.*)\s-\s(.*$)
用这个来代替

$2 - $1
这很好,但我有两个问题:

  • 我想知道为什么'\s-\s'找到了'-'的最后一个而不是第一个
  • 如果选择最后19个字符,并以某种方式将它们移到开头,这会更好吗
  • 我想知道为什么'\s-\s'找到了'-'的最后一个而不是第一个

    因为第一个
    *
    是贪婪的。它首先匹配所有内容,然后进行回溯,直到匹配完字符串的其余部分。看

    如果选择最后19个字符,并以某种方式将它们移到开头,这会更好吗

    如果你的日期格式总是有19个字符,那当然

    ^(.*) - (.{19})$
    
    替换为相同的替换


    不确定这是否是“更好”,但不知道你所说的“更好”是什么意思。

    我现在知道了“贪婪”的含义。Thx我注意到我使用
    (^.*)
    的地方您使用了
    ^(.*)
    。有区别吗?@RedOchre没有区别
    ^
    匹配零宽度字符串,因此它是否在组中并不重要。