正则表达式删除最后一部分

时间:2014-01-08 12:30:47

标签: regex

如果我有这个:

2.2.3.140113

并执行此操作:

$([System.Text.RegularExpressions.Regex]::Replace( $(str), '^(\d+)\.(.+)$', '$1_$2' ) )">

我会得到这个:

2_2.3.140113

我想要的是它应该是

2_2.3

如何删除最后一部分?

6 个答案:

答案 0 :(得分:2)

将正则表达式更改为:

^(\d+)\.(.+)\.\d+$

答案 1 :(得分:1)

尝试使用以下正则表达式:

^(\d+)\.(.+)(\.\d+)$

它将创建您将忽略的第三组,所以:

$([System.Text.RegularExpressions.Regex]::Replace( $(str), '^(\d+)\.(.+)(\.\d+)$', '$1_$2' ) )">

答案 2 :(得分:1)

所以你不应该抓住其余部分:

$([System.Text.RegularExpressions.Regex]::Replace( $(str), '^(\d+)\.(.+?\..+?)\..*', '$1_$2' ) )">

更新:

没有必要使用$,因为你的正则表达式包括最后的所有字符

Demo

答案 3 :(得分:1)

您可以使用此代码:

$([System.Text.RegularExpressions.Regex]::Replace( $(str), '^(\d+)\.(\d+)\.(\d+)\.(\d+)$', '$1_$2.$3' ) )">

答案 4 :(得分:1)

嗯,这样的事情不会这样做吗?

^(\d+)\.(\d+\.\d+).*

替换为:

$1_$2

答案 5 :(得分:0)

不确定这是否是您要做的事情,但如果您想在最后一个号码之前完成所有数字,您可以这样做:

(\d+)(?=\.)

enter image description here

这将捕获所有后跟点(。)

的数字组