[Regex]::Replace() 和 -replace 有什么区别?

2024-05-16

我明白了之间的区别.Replace() and -replace,但是什么是-replace and [Regex]::Replace()?

我测试了以下两个代码,但对我来说结果完全相同。

我还提到了 PowerShell Cookbook(O'reilly),它说

([Regex] is)极其高级的正则表达式替换

我想知道什么[Regex]可以但是-replace can't.

$line = "Loosen the socket by turning it#counterclockwise."
$line = $line -Replace "([a-z])#([a-z])","`$1 `$2"
$line

# Loosen the socket by turning it counterclockwise.

$line.GetType()
# IsPublic IsSerial Name                                     BaseType
# -------- -------- ----                                     --------
# True     True     String                                   System.Object

$line2 = "Loosen the socket by turning it#counterclockwise."
$line2 = [Regex]::Replace($line3,"([a-z])#([a-z])","`$1 `$2")
$line2

# Loosen the socket by turning it counterclockwise.

$line2.GetType()
# IsPublic IsSerial Name                                     BaseType
# -------- -------- ----                                     --------
# True     True     String                                   System.Object

鱼的回答很有帮助 https://stackoverflow.com/a/52333140/45375包含很好的指针,但让我以不同的方式构建事物,部分灵感来自安斯加尔·维彻斯 https://stackoverflow.com/users/1630171/ansgar-wiechers' 评论:

  • PowerShell 的 -replace operator https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6#replacement-operator is a 友好的包装器为了.NET [Regex]::Replace() https://learn.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.replace method.

    • 鉴于 PowerShell 是基于 .NET 框架构建的,因此 PowerShell 以更简单、更高级的方式呈现 .NET 功能是一种常见模式。
  • 默认行为的一个重要区别是-replace is 不区分大小写默认情况下,与 PowerShell 的一般行为一致。

    • 使用变体-creplace对于案例-敏感的替代品。
  • -replace只提供一个subset的功能性由各方面提供[Regex]::Replace()过载。

    • PowerShell 中的功能差距已缩小Corev6.1.0+,现在还提供callback通过传递给脚本块的功能-replace,感谢工作马蒂亚斯·R·杰森 https://stackoverflow.com/users/712649/mathias-r-jessen; e.g.,
      '1 + 1 = 2' -replace '\d+', { [int] $_.Value * 2 } yields '2 + 2 = 4'并且相当于:
      [regex]::replace('1 + 1 = 2', '\d+', { param($match) [int] $match.Value * 2 })
  • If -replace对于给定的用例来说足够好,使用it而不是[regex]::Replace().

    • 方法调用的语法与 PowerShell 的其余部分不同,并且在类型转换和代码的长期稳定性方面存在微妙之处;因此,如果可行的话,通常最好坚持使用本机 PowerShell 功能(cmdlet 和运算符)。

    • 然而,如果-replace不提供您需要的功能,调用[regex]::Replace()直接是一个很好的高级选项;注意Replace()也作为一个存在instance方法,在这种情况下它提供了额外的功能 - 例如,能够限制更换数量 https://learn.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.replace?view=netframework-4.7.2#System_Text_RegularExpressions_Regex_Replace_System_String_System_Text_RegularExpressions_MatchEvaluator_System_Int32_; e.g.:

      # Replace only the first two 'o' instances.
      PS> $re = [regex] 'o'; $re.Replace('fooo', '@', 2)
      f@@o
      
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Regex]::Replace() 和 -replace 有什么区别? 的相关文章

  • JavaScript:搜索字符串时的 indexOf 与 Match? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用之间是否存在明显的性能差异 str indexOf src and str match src 我个人比较喜欢match 和正则表达式 但同
  • 正则表达式 匹配捕获组内的文本

    示例文本 ruby object DynamicAttribute attributes resource id 1 resource type Applicant string value Michael int value id 359
  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • javascript从字符串创建不区分大小写的正则表达式

    我试图通过以不区分大小写的方式将输入与正则表达式匹配来进行验证 正则表达式作为对象上的字符串从服务中下来 我可能会得到类似的东西 regex ane 我可以执行以下操作 var rx new RegExp object regex The
  • 使用 C++ 中的 Boost 正则表达式缩小 HTML

    Question 如何使用 C 缩小 HTML 资源 外部库可能是答案 但我更希望改进当前代码 尽管我很期待其他的可能性 当前代码 这是我在c 中的解释以下答案 https stackoverflow com a 5324014 57079
  • 如何使用正则表达式限制小数点之前/之后/小数点以及整体的位数?

    我正在尝试检查数值是否具有特定数量的数字 总共不应超过 19 位数字 小数点前不能超过17位 整数部分 小数点后不得超过 4 位 小数部分 可以有小数点也可以没有 前面可以有 或 或没有 有效示例 1 1 0 0 1234567890123
  • 简单的 preg_replace 返回 null

    为什么这个非常简单的 preg replace 返回 null preg replace s test test 这个想法是删除空格 您忘记添加分隔符 preg replace s test test 而且最好使用 s 代替 s 在你的模式
  • Powershell 命令未发现异常

    我有以下 powershell 脚本 它使用一个函数并且可以在 ISE 中正常运行 Get ComputerSessions Computer localhost Functions Function Get ComputerSession
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • 用于计算句子中单词数的正则表达式

    public static int getWordCount String sentence return sentence split a zA Z0 9 a zA Z0 9 1 length sentence replaceAll a
  • 优化正则表达式以过滤数千个 HTML 选择选项

    背景 我开发了一个基于 jQuery 的穿梭小部件 https stackoverflow com a 13557000 59087对于 HTMLselect元素 因为我找不到一个经过最低限度编码并提供正则表达式过滤器来补偿的元素变音符号
  • 如何将 .bat 文件中的变量获取到 PowerShell 脚本中?

    我正在用 PowerShell 替换 bat 脚本的部分内容 批处理文件的配置是通过以下文件完成的set适当的环境变量 我正在寻找一种方法将这些变量值加载到 ps1脚本 无需修改 bat文件 因为它们也在其他地方使用 一个例子 bat看起来
  • R正则表达式获取第二个下划线之前的所有文本

    s lt 1 343 43Hello 2 323 14 fdh 99H 在 R 中 我想使用正则表达式来获取第二个下划线之前的子字符串 如何使用一个正则表达式来完成此操作 另一种方法是用 分割 然后粘贴前两个 一些东西 paste sapp
  • Powershell 数组到带引号的逗号分隔字符串

    我有一个数组 需要输出到逗号分隔的字符串 但我还需要引号 这是我所拥有的 myArray file1 csv file2 csv a myArray join a 输出为 a最终 file1 csv file2 csv 我想要的输出是 fi
  • 具有数组属性的 IFC 正则表达式

    IFC 是用于建筑项目的 STEP 文件的变体 IFC 包含有关正在建造的建筑物的信息 该文件基于文本 易于阅读 我正在尝试将这些信息解析为 python 字典 每行的一般格式类似于以下内容 第2334章 IFCMATERIALLAYERS
  • 标点符号的Javascript正则表达式(国际)?

    我需要一个正则表达式来匹配所有标点符号 例如标准的 但包括国际标记 例如颠倒的西班牙语问号 中文句点等 我的 google fu 即将到来 有谁手头有这样一个与Javascript兼容的正则表达式吗 添加到 stema的答案 https s
  • PSExec 中的会话 ID

    Psexec 无法在远程会话上为我显示记事本 GUI 因此 我尝试获取会话 ID 如下所示 c Users Amitra Downloads PSTools gt PsExec u administrator p force 135 20
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 具有相关动态参数的 PowerShell 函数

    我试图定义一个函数 其中动态参数相互依赖 例如 我可能有 1 个参数和两个动态参数 rootPath 驱动器盘符 rootPathItem 第一个文件夹 在驱动器盘符内 rootPathChildItem 第二个文件夹 第一个之内 问题是
  • 是否可以使用 Eclipse 的正则表达式搜索和替换转换为小写?

    我已经尝试过 L 但它似乎不是其语法的一部分 并且它的帮助没有提及任何可用的转换 我知道我可以并且知道如何从命令行执行此操作 但是 是否可以使用 Eclipse 的正则表达式搜索和替换进行大小写转换 您可以分两步完成 首先插入小写字母 那么

随机推荐

  • GPU的编程语言有哪些

    我读过一篇文章 指出 GPU 是超级计算的未来 我想知道在GPU上编程使用什么编程语言 OpenCL 是开放式跨平台解决方案 可在 GPU 和 CPU 上运行 另一个是 NVIDIA 为其 GPU 构建的 CUDA HLSL Cg 等少数几
  • Mesibo 通话 UI 未更新

    我正在尝试更改 Mesibo Call UI 的配置 但它并没有改变 我尝试如下 MesiboCallConfig mesiboCallConfig new MesiboCallConfig mesiboCallConfig backgro
  • Facebook 分享自定义消息

    项目网站上有一个测验 您可以回答一些问题 然后根据答案得出结果 结果有时会有所不同 但客户要求结果 自定义消息 应该能够在 Facebook 上共享 我想做的就是通过自定义消息分享测验的网址 即 我在有关历史的测验中回答了 10 个问题中的
  • 如何在 Laravel Mix 中将公共路径更改为包含下划线的路径?

    Laravel 5 4 中引入了 Mix 来编译资产并维护资产管道 Mix 默认为您的公共目录被命名public 在许多情况下 包括我的 我的公共目录被称为其他名称 就我而言 是public html 如何更改资源编译到的公共目录 我尝试过
  • Entity Framework Core 中的两个外键

    我在使用 Entity Framework Core 创建数据库时使用代码优先方法 我想创建两个指向同一个表的外键 我的示例显示用户表将保存用户 ID 消息表将保存接收者 ID 和发送者 ID 这意味着两个值必须指向同一个表 用户代码 pu
  • 无法删除 Cloud Composer 环境

    我正在尝试删除我只是为了尝试而创建的 Cloud Composer 环境 我收到以下错误 此环境上的 DELETE 操作在 9 小时前失败 原因是 以下错误消息 为防止删除而放置的留置权 由 serviceconsumermanagemen
  • 如何从一维数组和静态字符串创建对象

    我想要一个像 var obj ABC name true dob true CDE name true dob true EFG name true dob true CBA name true dob true XYZ name true
  • “即发即忘”异步委托的正确方法

    就我而言 我对异步委托这个话题很生疏 如果我想以 一劳永逸 的方式异步调用一个方法 这是一种合适的方法吗 Action action DoSomething action BeginInvoke action EndInvoke null
  • 页面在 Google Adwords 转化跟踪上重定向

    我有一个表单 人们可以在其中提交数据 然后使用 ajax 将数据发送到服务器 我已将其设置为 Google Adwords 中的转化 下面是我使用过的代码 问题是 当用户提交表单时 在收到响应后 它会重定向回我给出的 URL 我不想重定向
  • 向resource.resx添加新字符串不会反映到Designer.cs中

    我将两个新字符串添加到我们的resource resx中 但这些新添加的资源 字符串 没有反映到自动生成的Designer cs文件中 我已经重建了该项目 并尝试了 clean build 该项目 但没有运气 我有其他资源文件来支持各种国际
  • 如何检测被覆盖的 CSS 属性?

    I can get all css properties for an element with document stylesheets but some of those are not active because those pro
  • Google Cloud Storage (GCS) 中的文件数量有限制吗?

    我相信不应该有任何限制 但只是想确认一下 官方文档中没有提及 Google Cloud Storage GCS 中的文件数量有限制吗 如果 GCS 中有大量文件 是否会对性能 访问和写入操作 产生影响 文件名长度是否有限制 因为我可以使用文
  • 从 Internet Explorer 打印时的默认文件名

    使用 pdf 打印机打印网页 将页面另存为 pdf 时 Chrome 和 Firefox 都使用该页面
  • 从 Javascript 中的嵌套函数返回值[重复]

    这个问题在这里已经有答案了 考虑这段代码 缩短 function getSecret db transaction function transaction transaction executeSql SELECT FROM table
  • 不明白为什么当变量为整数时条件评估为 True

    我正在使用表现出以下行为的代码 假设我有一个变量d我把它赋给一个整数9 d 9 为什么以下语句有效 In 95 if d print d else print Did not print d 9 In 96 当 d 本身不是布尔值且未通过以
  • 使用主题 css 文件需要页面上的标头控件。 (例如 )

    我正在开发 asp net 网络项目 当我运行该项目时 它工作正常 但在服务器中 我收到以下错误 如何解决这个问题呢 Using themed css files requires a header control on the page
  • 如何知道 Dart 中的复选框或单选按钮是否被选中?

    我有一个复选框和一个单选按钮组 我想知道是否选中了该复选框以及选择了哪个单选按钮 我如何在 Dart 中做到这一点 假设我们有这样的 HTML
  • 我可以将参数作为数组传递吗?

    例如 而不是 assert eq add 2 3 5 有什么方法可以调用类似的东西 let params u32 2 2 3 assert eq call add params 5 我发现这个功能对于测试非常有用 例如 如果我想为需要大量参
  • R 错误:无法更改锁定绑定的值

    我试图估计无限数字流的平均值和标准差 当我运行代码时 出现错误消息 无法更改锁定绑定的值 我做了一些研究 发现这个错误与我使用全局变量有关 但我无法弄清楚 任何帮助将非常感激 在此先感谢您的帮助 define global variable
  • [Regex]::Replace() 和 -replace 有什么区别?

    我明白了之间的区别 Replace and replace 但是什么是 replace and Regex Replace 我测试了以下两个代码 但对我来说结果完全相同 我还提到了 PowerShell Cookbook O reilly