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

时间:2018-12-30 03:50:01

标签: 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

通过阅读本论坛(感谢大家),我提出了以下正则表达式

(^.*)\s-\s(.*$)

并将其用作替代

$2 - $1

这很好,但是我有两个问题:

  1. 我想知道为什么“ \ s- \ s”找到了最后一次出现的“-”而不是第一个?
  2. 通过选择最后19个字符并以某种方式将其移到开头可以更好地做到这一点吗?

1 个答案:

答案 0 :(得分:1)

  

我想知道为什么“ \ s- \ s”找到了最后一次出现的“-”而不是第一个?

因为第一个*是贪婪的。它首先匹配所有内容,然后回溯直到匹配字符串其余部分的内容为止。参见this question

  

通过选择最后19个字符并以某种方式将其移到开头可以更好地做到这一点吗?

如果您的日期格式始终包含19个字符,请确保!

^(.*) - (.{19})$

替换相同的替换物。

不确定这是否“更好”,而不知道“更好”的意思。