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

3
如果我有这个东西:
2.2.3.140113

并执行以下操作:
$([System.Text.RegularExpressions.Regex]::Replace( $(str), '^(\d+)\.(.+)$', '$1_$2' ) )">

我会得到这个:
2_2.3.140113

What I want is that it should be

2_2.3

我该如何移除最后一部分?

你有更多的样例字符串吗? - Jerry
6个回答

2

把你的正则表达式改为:

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

1
“嗯,这样做不行吗?”
^(\d+)\.(\d+\.\d+).*

替换为:

$1_$2

1
尝试使用以下正则表达式:
^(\d+)\.(.+)(\.\d+)$

它将创建第三个组,您只需忽略它,因此:
$([System.Text.RegularExpressions.Regex]::Replace( $(str), '^(\d+)\.(.+)(\.\d+)$', '$1_$2' ) )">

1
所以你不应该捕获它们的其余部分:

(原文已经包含HTML标签,无需再加)
$([System.Text.RegularExpressions.Regex]::Replace( $(str), '^(\d+)\.(.+?\..+?)\..*', '$1_$2' ) )">

更新:

您的正则表达式已经包含了末尾的所有字符,因此没有必要使用$

演示


1
似乎你也没有测试正则表达式部分。根本就没有匹配项! - Jerry
1
^(\d+).(.+?..+?). 变成 2_2.3121221 - user1540911

1
您可以使用以下代码:

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

0

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

(\d+)(?=\.)

enter image description here

这将捕获所有紧随小数点(.)后面的数字组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接