为什么[regex] match()和-match不同?

猫娘

当我偶然发现一个与Powershell的[regex]类匹配不同的奇怪场景时,我在PowerShell中玩正则表达式-match在我尝试从字符串中删除空行的情况下,当不使用-replace我的任何表达式时,[regex] replace()将行删除就可以了。

PS C:\Users\Neko> $a = @"
line1

line2
line3

line4
"@
PS C:\Users\Neko> $a -match '\n^\s*$'
false
PS C:\Users\Neko> $b = [regex]::new('\n^\s*$',"IgnoreCase, Multiline")
PS C:\Users\Neko> $b.Matches($a)


Groups   : {0}
Success  : True
Name     : 0
Captures : {0}
Index    : 5
Length   : 1
Value    :


Groups   : {0}
Success  : True
Name     : 0
Captures : {0}
Index    : 18
Length   : 1
Value    :

在测试过的其他情况下,我还没有看到这种情况,但是我不知道两者之间的差异是什么,或者是什么导致这些不同的结果。这与-replace(有意义)相同,但是我不知道是什么原因造成的。


那么,PowerShell-match-replace.NET正则表达式类match()replace()方法之间的区别是什么?为什么它们不同?

克里斯·路德(Chris Rudd)

关键可能是 Multiline

$regex = [regex]'\n^\s*$'
$regexM = [regex]::new('\n^\s*$',"IgnoreCase, Multiline")
$a = @"
line1

line2
line3

line4
"@
$a -match $regex
false
$a -match $regexM
true

还要注意,实际上创建正则表达式在运行时在计算上是昂贵的。我建议在开始时将所有的正则表达式分配在一起,这样您只需要编译一次即可。这也使实际匹配更加可读(如果您选择好名字):

$regex = @{
    ExtraWhitespace = [regex]::new('\n^\s*$',"IgnoreCase, Multiline")
}
$a -match $regex.ExtraWhitespace

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在libc ++上,为什么regex_match(“ tournament”,regex(“ tour | to | tournament”))失败?

来自分类Dev

为什么MATCH AGAINST返回的结果与LIKE不同?

来自分类Dev

为什么regex_match抛出“复杂性异常”?

来自分类Dev

为什么C ++ regex_match函数要求在该函数之外定义搜索字符串?

来自分类Dev

为什么要使用re.match()?

来自分类Dev

Python Regex:regex的“ re.match()”与“ re.sub()”不同

来自分类Dev

为什么C#的Regex.Matches()返回单个Match对象中的所有匹配项?

来自分类Dev

javascript中.match和.test有什么区别

来自分类Dev

具有2个MATCH子句的查询有什么作用?与具有2个不同路径的单个MATCH子句的查询有什么不同?

来自分类Dev

要知道match(50)和match(0)的值是什么?

来自分类Dev

为什么[regex] match()和-match不同?

来自分类Dev

为什么`Regex`在src / test和src / androidTest中具有不同的行为?

来自分类Dev

要知道match(50)和match(0)的值是什么?

来自分类Dev

在libc ++上,为什么regex_match(“ tournament”,regex(“ tour | to | tournament”))失败?

来自分类Dev

为什么MATCH AGAINST返回的结果与LIKE不同?

来自分类Dev

为什么regex_match抛出“复杂性异常”?

来自分类Dev

使用match和regex从哈希中仅选择数字

来自分类Dev

为什么`preg_match`返回整数?

来自分类Dev

regex正常时,为什么preg_match在标签之间找不到字符串?

来自分类Dev

为什么此javascript regex.match捕获3个只希望2个的组?

来自分类Dev

为什么fc-match对于Consolas不尊重Courier的匹配和编辑规则?

来自分类Dev

为什么python regex match函数匹配该特殊字符?

来自分类Dev

为什么regex_match是函数而不是类regex的方法?

来自分类Dev

为什么Regex.Match与Regex.Matches不匹配相同的字符串?

来自分类Dev

为什么$模式不会使std :: regex_match返回true?

来自分类Dev

为什么std :: regex_match不支持“零长度断言”?

来自分类Dev

为什么 regex_match 与我的正则表达式不匹配?

来自分类Dev

.match("") 和 .match(/^$/) 有什么区别?

来自分类Dev

为什么 php 中的 preg_match 与 preg_replace 的行为不同(导致不同的匹配)?

Related 相关文章

  1. 1

    在libc ++上,为什么regex_match(“ tournament”,regex(“ tour | to | tournament”))失败?

  2. 2

    为什么MATCH AGAINST返回的结果与LIKE不同?

  3. 3

    为什么regex_match抛出“复杂性异常”?

  4. 4

    为什么C ++ regex_match函数要求在该函数之外定义搜索字符串?

  5. 5

    为什么要使用re.match()?

  6. 6

    Python Regex:regex的“ re.match()”与“ re.sub()”不同

  7. 7

    为什么C#的Regex.Matches()返回单个Match对象中的所有匹配项?

  8. 8

    javascript中.match和.test有什么区别

  9. 9

    具有2个MATCH子句的查询有什么作用?与具有2个不同路径的单个MATCH子句的查询有什么不同?

  10. 10

    要知道match(50)和match(0)的值是什么?

  11. 11

    为什么[regex] match()和-match不同?

  12. 12

    为什么`Regex`在src / test和src / androidTest中具有不同的行为?

  13. 13

    要知道match(50)和match(0)的值是什么?

  14. 14

    在libc ++上,为什么regex_match(“ tournament”,regex(“ tour | to | tournament”))失败?

  15. 15

    为什么MATCH AGAINST返回的结果与LIKE不同?

  16. 16

    为什么regex_match抛出“复杂性异常”?

  17. 17

    使用match和regex从哈希中仅选择数字

  18. 18

    为什么`preg_match`返回整数?

  19. 19

    regex正常时,为什么preg_match在标签之间找不到字符串?

  20. 20

    为什么此javascript regex.match捕获3个只希望2个的组?

  21. 21

    为什么fc-match对于Consolas不尊重Courier的匹配和编辑规则?

  22. 22

    为什么python regex match函数匹配该特殊字符?

  23. 23

    为什么regex_match是函数而不是类regex的方法?

  24. 24

    为什么Regex.Match与Regex.Matches不匹配相同的字符串?

  25. 25

    为什么$模式不会使std :: regex_match返回true?

  26. 26

    为什么std :: regex_match不支持“零长度断言”?

  27. 27

    为什么 regex_match 与我的正则表达式不匹配?

  28. 28

    .match("") 和 .match(/^$/) 有什么区别?

  29. 29

    为什么 php 中的 preg_match 与 preg_replace 的行为不同(导致不同的匹配)?

热门标签

归档