regex - 正则表达式替换以某个子字符串开头的所有单词的所有出现

标签 regex powershell

使用Windows PowerShell,我试图通过附加后缀来替换大字符串中某个特定单词模式的所有出现。

$string = "The string that contains several occurrences of ab_abcde, ab_abcde_FOO, ab_vwxyz, ab_vwxyz_BAR, etc"

我想在$string中的每个匹配单词后缀“_XXX”

由于我希望所有匹配项都以ab_abcdeab_vwxyz开头,因此我尝试了以下操作:
$string -replace "(ab_abcde|ab_vwxyz)(.?)\s+", '$1$2_XXX'

一百万个其他变体,但无济于事。

我花了整整一天的时间在SO上狩猎,但还没有找到一种行之有效的解决方案。我将不胜感激。

PS:由于我的$string实际上是mysqldump的输出,因此我的一些搜索词将包裹在grave-accent(`)之间,就像这样:ʻab_abcde`,我想将它们匹配。考虑到这也是PowerShell的转义字符,我不确定这会带来多少复杂性。

谢谢。

最佳答案

就像是

$string -replace "((?:ab_abcde|ab_vwxyz)\w*)", '$1_XXX'

Regex Demo

关于regex - 正则表达式替换以某个子字符串开头的所有单词的所有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27710795/

相关文章:

powershell - 嵌入Powershell脚本问题

function - 如何在 PowerShell 函数中将函数指定为脚本 block 参数的默认值?

javascript - 我怎样才能比较 jquery match 中的字符串

java - 在Java中用一个感叹词正则表达式多个重复字符

Powershell - Azure Data Lake Store 中的递归

windows - git diff 的输出在 powershell 中处理不正确

Powershell 函数被传递了太多参数

c# - 正则表达式 C#,获取 2 个字符之间的所有内容,但仅当特定字符位于中间且缺少其他字符时

java - 使用 java.lang.String.matches() 查找匹配项

regex - Groovy 提取字符前的子字符串