替换字符串中最后出现的字符

Blu*_*luz 5 regex string powershell replace special-characters

我有以下字符串:

01/01/2014 blbalbalbalba blabla/blabla

我想用空格替换最后一个斜杠,并在日期中保留前两个斜杠.

我提出的最接近的事情是这样的事情:

PS E:\> [regex] $regex = '[a-z]'
PS E:\> $regex.Replace('abcde', 'X', 3)
XXXde
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从终点开始.任何帮助将不胜感激.

编辑我的问题以澄清:我只想用空格字符替换最后一个斜杠字符,因此:

01/01/2014 blbalbalbalba blabla/blabla成为01/01/2014 blbalbalbalba blabla blabla

知道"blabla"的长度从一行到另一行是不同的,斜线字符可以是任何地方.

谢谢 :)

Mat*_*ion 10

使用以下字符串匹配:

(.*)[/](.*)
Run Code Online (Sandbox Code Playgroud)

以及以下内容:

$1 $2
Run Code Online (Sandbox Code Playgroud)

说明:

(.*)匹配任何东西,任意次数(包括零).通过将它包装在括号中,我们可以在替换序列期间再次使用它,使用占位符$后跟元素编号(作为示例,因为这是第一个元素,$1将是占位符).当我们在替换字符串中使用相关占位符时,它会将正则表达式的此部分匹配的所有字符放入结果字符串中.在这种情况下,匹配的文本将是01/01/2014 blbalbalbalba blabla

[/] 用于匹配正斜杠字符.

(.*)再次用于匹配任何次数,任何次数,类似于第一个实例.在这种情况下,它将匹配blabla,使其在$2占位符中可用.

基本上,前三个元素一起工作以查找多个字符,后跟正斜杠,后跟另一个字符.因为第一个"匹配一切"是贪婪的(也就是说,它将尝试匹配尽可能多的字符),它将包括所有其他正斜杠,直到最后一个.它没有停止上一个正斜杠的原因是包括它会使正则表达式失败,因为[/]它将无法再匹配任何东西.