【问题标题】:Python 2.7 Filepath Regex match Too many )'sPython 2.7 Filepath Regex match Too many )'s
【发布时间】:2020-12-03 13:13:40
【问题描述】:

我正在尝试匹配文件的 windows 文件路径中反斜杠之间的特定单词。 对于这种情况,要匹配的值是“Psb+”

X:\Guli\Proc(Loops)\Read\Psb+\İngil\Fate\5.0X[Lxss.] [Psb+] Instructions.txt

由于软件限制,我不能使用 import os,但我可以使用 Pythonnet。

我的正则表达式是这样的

pFilePath = "X:\Guli\Proc\(Loops)\Read\Psb+\İngil\Fate\5.0X\[Lxss.] [Psb+] Instructions.txt"
searchtext = "Psb+"    
pm = re.search(r'(?i)(?<="\\")' + searchtext + r'(?="\\")', pFilePath)

它在 Visual Studio Core 中运行正常,但是当我在我的环境中尝试它时,我得到了这个错误:

parsing ............. - Too many )'s.

我被这个困住了。有没有更聪明的方法?

【问题讨论】:

  • 您必须转义 pFilePath 中的反斜杠。
  • 有没有办法自动转换 pFilePath 而不是手动转义每个非法字符?我无法导入操作系统。
  • pFilePath.replace(r"\" , r"\\") 这会产生错误并且不起作用 SyntaxError: unexpected character after line continuation character

标签: .net regex windows python-2.7 filepath


【解决方案1】:

在尝试了很多事情之后,

我通过使用 IronPython 实现 Directory.GetDirectories 方法解决了这个问题。

import clr
from System.IO import Path, File, Directory

https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.getdirectories?view=netcore-3.1

然后我找到了一种使用符号链接导入os的方法。

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2019-01-19
    • 2014-10-14
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多