重新编译给出错误不平衡括号

RE Compile giving error unbalanced parenthesis

import re
import os
re_filename = re.compile(
    r"^(?:.*" + os.sep + r")?" +
    r"([^@]*?)" +
    r"(?:@([^.]*?))?" +
    r"(?:\.yang|\.yin)*" +
    r"\.(yang|yin)$")

回溯(最近调用最后): 文件“”,第 6 行,位于 编译中的文件“C:\Python27\lib\re.py”,第 190 行 return_compile(模式,标志) _compile 中的文件“C:\Python27\lib\re.py”,第 242 行 引发错误,v sre_constants.error: 括号不平衡

os.sep 是反斜杠时,它会转义其后的结束“)”,因此您没有捕获组含义中的结束括号,而是文字“) ".

因此请确保 os.sep 字符是按字面意思理解的:

import re
import os
re_filename = re.compile(
    r"^(?:.*" + re.escape(os.sep) + r")?" +
    r"([^@]*?)" +
    r"(?:@([^.]*?))?" +
    r"(?:\.yang|\.yin)*" +
    r"\.(yang|yin)$")