【问题标题】:Find text between Opening parenthesis closing [closed]在左括号右之间查找文本[关闭]
【发布时间】:2012-03-05 13:19:16
【问题描述】:

我需要一个正则表达式来选择左括号右括号之间的所有文本。

示例:

xxxxxxx (Regular Expression) xxxxxxx( One ) xxxxxxx(One Word ) xxxxxxx ( Two Word) 
1) xxxxxxx(lowercase) 
2) xxxxxxx(UPPERCASE)

结果应该是:

  1. 匹配 1:xxxxxxx(正则表达式)
  2. 比赛2:xxxxxxx(一)
  3. 第 3 场比赛:xxxxxxx(一个字)
  4. 匹配 4:xxxxxxx(两个字)
  5. 匹配 5:xxxxxxx(小写)
  6. 匹配 6:xxxxxxx(大写)

备注: xxxxxxx 是任意字符

谢谢。

【问题讨论】:

    标签: regex


    【解决方案1】:

    可以提供帮助的 python 代码。

    >>> import re
    >>> s = """xxxxxxx (Regular Expression) xxxxxxx( One ) xxxxxxx(One Word ) xxxxxxx ( Two Word) 
    ... 1) xxxxxxx(lowercase) 
    ... 2) xxxxxxx(UPPERCASE)"""
    >>> re.findall("([A-Za-z]+ {0,1}\(.*?\))", s, re.MULTILINE)
    ['xxxxxxx (Regular Expression)', 'xxxxxxx( One )', 'xxxxxxx(One Word )', 'xxxxxxx ( Two Word)', 'xxxxxxx(lowercase)', 'xxxxxxx(UPPERCASE)']
    >>> 
    

    "([A-Za-z]+ {0,1}\(.*?\))" 是正在使用的正则表达式。

    • [A-Za-z]+ 表示 A-Z 或 a-z 中任何字符的一次或多次出现
    • ` {0,1} 表示出现 0 或 1 次空格
    • .* 表示一个字符,然后出现零个或多个字符。
    • ? 表示非贪婪方式。
    • \(/) 是反斜杠的,因为我们也想匹配它们。

    【讨论】:

      【解决方案2】:

      试试这个:

      [^\(\)]*\([^\)]*\)
      

      这是现场演示:

      http://regexr.com?300k2

      或者,如果您需要显式访问括号之前的内容和括号内的内容,请使用以下正则表达式,它为适当的组提供名称:

      (?<outpar>[^\(\)]*)\((?<inpar>[^\)]*)\) 
      

      这又是它的现场演示:

      http://regexr.com?300k5

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-05
        • 1970-01-01
        • 2013-08-05
        • 1970-01-01
        • 2011-02-09
        • 2015-09-29
        • 2013-08-21
        • 1970-01-01
        相关资源
        最近更新 更多