【问题标题】:Regex for removing data in parenthesis用于删除括号中数据的正则表达式
【发布时间】:2013-11-16 15:01:08
【问题描述】:

我正在尝试删除下面这些字符串的括号区域,但我无法使正则表达式正常工作:(

数据:

x (LOC)
ds ds (32C)
d'ds ds (LeC)
ds-d da(LOQ)
12345 (deC)

正则表达式尝试:

[ \(\w+\)]

正则表达式101:

http://regex101.com/r/bD8fE2

示例代码

items = ["x (LOC)", "ds ds (32C)", "d'ds ds (LeC)", "ds-d da(LOQ)", "12345 (deC)"]
for item in items:
    item = re.sub(r"[ \(\w+\)]", "", item)
    print item

【问题讨论】:

    标签: python regex python-2.7


    【解决方案1】:

    去掉方括号;你不匹配一个字符类:

    item = re.sub(r" \(\w+\)", "", item)
    

    演示:

    >>> items = ["x (LOC)", "ds ds (32C)", "d'ds ds (LeC)", "ds-d da(LOQ)", "12345 (deC)"]
    >>> for item in items:
    ...     print re.sub(r" \(\w+\)", "", item)
    ... 
    x
    ds ds
    d'ds ds
    ds-d da(LOQ)
    12345
    

    最后一个示例在左括号 (() 之前没有空格,因此不匹配。如果您也需要该模式,您可以将空间设为可选:

    item = re.sub(r" ?\(\w+\)", "", item)
    

    也许匹配任何不是右括号的东西也对你有用:

    item = re.sub(r" ?\([^)]+\)", "", item)
    

    这匹配范围更广的字符,而不仅仅是\w

    在正则表达式中,方括号[...],表示一个字符类;一组匹配一次的字符。 [ \(w+\)] 类表示:匹配 一个 字符,如果它匹配包含空格、左括号、\w 类的所有字符、+ 加号或右括号的集合.

    【讨论】:

      【解决方案2】:

      方括号内的任何内容都与字符的顺序无关,因为[ ... ] 是一个字符类。完全删除它们:

      r" \(\w+\)"
      

      我会为可选空间添加?

      r" ?\(\w+\)"
      

      regex101 demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-14
        • 2018-08-25
        • 1970-01-01
        • 1970-01-01
        • 2014-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多