gpt4 book ai didi

regex - 如何在正则表达式中检测数字前的字符

转载 作者:行者123 更新时间:2023-12-01 13:16:33 24 4
gpt4 key购买 nike

我有一个字符串 test_demo_0.1.1 .

我想在 PowerShell 脚本中添加 0.1.1 之前一些文字,例如:test_demo_shay_0.1.1 .

我成功地用 RegEx 检测到第一个数字并添加文本:

$str = "test_demo_0.1.1"
if ($str - match "(?<number>\d)")
{
$newStr = $str.Insert($str.IndexOf($Matches.number) - 1, "_shay")-
}
# $newStr = test_demo_shay_0.1.1

问题是,有时我的字符串在另一个位置包含一个数字,例如: test_demo2_0.1.1 (然后插入不好)。

所以我想检测前面字符是 _的第一个数字, 我该怎么做?

我试过 "(_<number>\d)""([_]<number>\d)"但它不起作用。

最佳答案

你所求的叫做正lookbehind (检查当前位置左侧是否存在某种模式的构造):

"(?<=_)(?<number>\d)"
^^^^^^

但是,您似乎只想插入 _shay在以 _ 开头的第一个数字之前.一个 replace操作最适合这里:
$str -replace '_(\d.*)', '_shay_$1'

结果: test_demo_shay_0.1.1 .

详情
  • _ - 下划线
  • (\d.*) - 捕获组 #1:一个数字,然后是任何 0+ 字符到行尾。
  • $1替换模式中是与捕获组#1 匹配的内容。

    关于regex - 如何在正则表达式中检测数字前的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54309402/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com