gpt4 book ai didi

regex - 使用正则表达式查找模式时出现倒序错误的范围?

转载 作者:行者123 更新时间:2023-12-01 12:55:03 25 4
gpt4 key购买 nike

我正在根据正则表达式查找子目录。

当我有以下正则表达式模式时,一切正常。

Dim sPattern As String = "^[/C:\/Users\/parth.jani\/Documents\/New folder\/b\/Photo_](.*)[_Order1]$"

但如果我有以下模式,它会抛出 [x-y] range in reverse order 错误。

Dim sPattern As String = "^[/C:\/Users\/parth.jani\/Documents\/New folder\/b\/Photo_](.*)[_Order-1]$"

我知道它的“-”字符导致

中的错误

[_Order-1]$

如果有人能提供帮助,我将不胜感激。 :-)

最佳答案

连字符 - 字符在 RegEx 中具有语义含义,尤其是当包含在 [] 中时。如果这是您需要匹配的文件名的一部分,您应该使用 \- 将其转义

一般来说,在您的表达式中使用 [] 对我来说似乎不合适,因为它表示可能字符的范围,而不是序列。如果您需要将它们的内容视为一个单独的组,请改用 (),如下所示:

"^(C:\\Users\\parth.jani\\Documents\\New folder\\b\\Photo_)(.*)(_Order\-1)$"

如果您担心这些与捕获组不匹配(即,如果您只需要捕获 (.*) 部分),那么添加 ?:在其他组的开头,以便匹配器将忽略它们:

"^(?:C:\\Users\\parth.jani\\Documents\\New folder\\b\\Photo_)(.*)(?:_Order\-1)$"

注意 我已将路径分隔符从 "\/" 更改为 "\\",因为前者无效。如果你仍然没有得到匹配,并且你对文件运行这个,检查你的文件是否有扩展名。按照现在的模式,它期望路径没有文件扩展名(目录名或没有扩展名的文件)。如果您针对以类似于 Directory.GetAllFiles() 的方式检索扩展名的文件 运行代码,调用将包括带扩展名的文件名,而正则表达式不会匹配它们。我添加这个是因为如果您在 Windows 上使用默认操作系统选项,它会隐藏已知文件类型的扩展名,因此您的预期路径可能不是正则表达式评估所依据的路径。

关于regex - 使用正则表达式查找模式时出现倒序错误的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21303566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com