代码之家  ›  专栏  ›  技术社区  ›  notacorn

如何使用regex在python中删除字符串中的最后一个括号及其内容?

  •  -1
  • notacorn  · 技术社区  · 2 年前

    假设我们有一个文件列表,如

    (顺便说一句,这些不是符号链接,我只是用箭头来指示输入与输出的关系)

    test(1) -> test
    test2(1) -> test2
    test3(note to self) (6) -> test3(note to self)
    

    edit(不确定为什么会因为缺乏焦点而请求关闭。我在这里给你3个具体的测试用例)

    我们不能对字符串的其余部分做出任何假设,除非在末尾有一组括号,里面有一些东西。所以这意味着在最后一组不应该被触碰的括号之前可能有括号。只有最后一个括号。

    如何通过 re python模块?

    1 回复  |  直到 2 年前
        1
  •  1
  •   user24714692    2 年前

    我会使用这样的模式:

    import re
    
    p = r'^([^\r\n]*)\([^)]*\)([^\r\n]*)$'
    s = "test3(note to self)(6) -> test3(note to self) some text"
    print(re.sub(p, r'\1\2', s))
    
    

    打印

    测试3(自我提示)(6)->test3一些文本


    ^([^\r\n]*)\([^)]*\)([^\r\n]*)$

    • ^和$是开始和结束锚点。
    • ([^\r\n]*) 团体是你想要保留的。
    • \([^)]*\) 我们想放弃这个。