Regex 如何使用PowerShell从SVN日志输出中修剪文件修改值

Regex 如何使用PowerShell从SVN日志输出中修剪文件修改值,regex,svn,powershell,string-matching,Regex,Svn,Powershell,String Matching,我在PowerShell中捕获了一个SVN日志,然后我尝试修改它,并将其串除文件URL之外的所有内容。我遇到的问题是让正则表达式删除文件URL之前的所有内容。我的条目匹配为: M/trunk/project/application/myFile.cs 开始时有两个空格,最初我试图用正则表达式替换,但似乎不起作用,因此我使用了一个trim,最后使用: M/trunk/project/application/myFile.cs 现在我想去掉文件状态指示器,因此我有一个正则表达式,如: $entry=

我在PowerShell中捕获了一个SVN日志,然后我尝试修改它,并将其串除文件URL之外的所有内容。我遇到的问题是让正则表达式删除文件URL之前的所有内容。我的条目匹配为:

M/trunk/project/application/myFile.cs

开始时有两个空格,最初我试图用正则表达式替换,但似乎不起作用,因此我使用了一个trim,最后使用:

M/trunk/project/application/myFile.cs

现在我想去掉文件状态指示器,因此我有一个正则表达式,如:

$entry=$entry.Replace(“^[ADMR]\s+”,”)


其中$entry是匹配的文件URL,但这似乎没有任何作用,甚至删除插入符号只是查找值和空间也没有任何作用。我知道$entry是一个字符串,我最初认为Replace不起作用,因为$entry不是字符串,但在脚本期间运行Get Member显示我有一个字符串类型。svn文件指示符是否有什么特别之处,或者正则表达式是否以某种方式关闭?

给出了示例字符串:

$entry = 'M /trunk/project/application/myFile.cs'
$fileURL = ($entry -split ' /')[1]

您的正则表达式不起作用,因为
string.Replace
只进行文本字符串替换,不知道正则表达式。您可能需要
[Regex]::Replace
或只使用
-Replace
操作符

但是,当将SVN与PowerShell一起使用时,我总是使用XML格式。SVN允许对所有命令使用
--xml
选项,然后这些命令将输出xml(如果在这两个选项之间死亡,则无效)

例如:

会给你所有的路

但如果您需要正则表达式:

$entry -replace '^.*?\s+'

这将删除第一个空格序列中的所有内容(包括第一个空格序列),这样做还有一个额外的好处,即您不需要记住其中可能出现的字符。

我非常专注于在正则表达式中完成此操作,我完全忘了拆分。把整件事都放在正则表达式里会很好,但生活有时会给你柠檬。我这样做是为了别的事情,但这次我尽量避免,因为它不能满足我以后的需要。不过我可能会重温一下。好吧,在实际阅读了这个问题之后,现在扩展了答案;)
$entry -replace '^.*?\s+'