添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. Learn more

I am having some issues with regular expression mainly because I think the information I can find is not specifically for powershell and all the samples I have tried either error or don't work as intended. I am trying to replace the first occurrence of a word in a string with another word but not replace any other occurrences of that word. for an example take the string:

My name is Bob, her name is Sara.

I would like to replace the first occurrence of name with baby so the resulting string would be

My baby is Bob, her name is Sara.

I have been working in https://regex101.com/ to try to build and see what is selected as I go but as I said none of these have a powershell flavor of regex. In that I can just turn off the global flag and it seems to select the first occurrence but not in powershell. So I am really at a loss of where to begin all really have at this point is selecting all occurrences of the word name with:

$test = "My name is Bob, her name is Sara."
$test -replace 'name', 'baby'
                Wow that worked great. I think I was close to that I tried some examples like that with $1 and $2 but couldn't get it to work properly. Thanks for the help. I didn't fully understand how the examples work but this makes a lot of sense now.
– themackyo
                Oct 17 '16 at 15:07
$test = "My name is Bob, her name is Sara."
[regex]$pattern = "name"
$pattern.replace($test, "baby", 1) 
> My baby is Bob, her name is Sara
                So the 1 Just says replace the first one you find ? A 2 would replace both then ? If you said 3 and only have 2 words of name would it error or only replace the first 2 ?
– themackyo
                Oct 17 '16 at 15:56
                Yes, its the number of replacements to make.  If you pass a number greater then the actual frequency of the word it will just replace them all.
– Alex K.
                Oct 17 '16 at 16:05
                This is a much more intuitive way to do this, and works with variables much better.
– J E Carter II
                Nov 6 '19 at 16:32
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.