正则表达式模式在 powershell 中有效,但在 notepad++ 中无效

正则表达式模式在 powershell 中有效,但在 notepad++ 中无效

我在 powershell 中使用以下行,找到了我所寻找的内容。

Select-String -Path *.txt -Pattern '(.*)pov\"(.*)Fred(.*)\"$'

但我无法使用 notepad++ 中的 find 命令来查找任何内容。
选择了环绕,选择了正则表达式,没有选择换行符
这两个系统使用正则表达式的方式是否存在一些基本区别。

行示例为:- pov" example text Fred "

答案1

我能够在 Notepad++ 7.9.2 中重现该问题,并立即解决了它。

我如何复现它

使用'(.*)pov\"(.*)Fred(.*)\"$'(带单引号),它返回错误:Find: Can't find the text "'(.*)pov\"(.*)Fred(.*)\"$'",这是正确的。

在此处输入图片描述

我如何解决它

只需删除单引号,它就会正确找到匹配项:

在此处输入图片描述

解释

正则表达式被视为字符串,在 PowerShell 中,用引号('")括起来的文本被视为字符串对象,在大多数(如果不是全部)编程语言中,您需要明确使用引号将一段文本变成字符串对象。

但是在 Notepad++ 中,您输入的所有内容都已被视为字符串,因此引号将成为文字引号和字符串的一部分,从而改变正则表达式的含义,因此不会出现匹配。


根据评论更新

我自己测试了一下,发现不需要使用fred(小写),Fred(正确大小写)就可以了,Notepad++ 不区分大小写。

证明:

在此处输入图片描述

相关内容