匹配某些文本中的代码字符串

时间:2013-09-26 00:58:18

标签: regex pcre

我有一些代码字符串,我需要从中提取一些数据,但具体数据。

字符串的格式始终相同。

  1. 我需要在(和)之间的开头提取文本,因此它会在这里提取List Options
  2. 我需要在此处提取结尾@groups附近的文字。
  3. 我最后需要的字符串始终以@

    开头
    (List Options((join ", ", @groups))
    

    我试过了:

    ^\((\w+).*, (@\w+)\)\)$
    

    但它只给了我List

    这个词

2 个答案:

答案 0 :(得分:2)

这应该适合你。

^\(([^(]+)[^@]+([^)]+)\)+$

请参阅working demo

正则表达式:

^          the beginning of the string
\(         look and match '('
 (         group and capture to \1:
  [^(]+    any character except: '(' (1 or more times)
 )         end of \1
  [^@]+    any character except: '@' (1 or more times)
 (         group and capture to \2:
  [^)]+    any character except: ')' (1 or more times)
 )         end of \2
 \)+       ')' (1 or more times)
$          before an optional \n, and the end of the string

答案 1 :(得分:1)

尝试这个

^\(([^\(]+?)\(.*?@([^\)]+?)\)

或者如果您还需要捕获@符号,只需将其移到第二个捕获组

^\(([^\(]+?)\(.*?(@[^\)]+?)\)