匹配括号内任何字符的正则表达式

时间:2014-06-10 07:14:33

标签: php regex

尝试创建与parentheis中的任何字符匹配的正则表达式。

我的正则表达式是这个

preg_match('/\((.*?)\)/', $listanswer, $answer);

括号内的所有字符串都是匹配模式。但问题是,当我尝试匹配时,。 (this word), (sample data)它只返回null。如果没有添加空格,则匹配。对此有何想法?

已在此处测试过。 http://regex101.com

它运作得很好。我错过了什么>?

2 个答案:

答案 0 :(得分:3)

由于您的输入中没有(nested (parentheses))

要匹配(the parentheses too)使用\([^)]*\)demo

要匹配(what's inside?),请使用(?<=\()[^)]*(?=\))demo

  1. 第一个只是匹配一个开放的parens,任何不是关闭的parens的chars,以及一个结束的标准杆。
  2. 第二个使用了lookbehind和lookahead。首先,(?<=\() lookbehind断言先前的是一个左括号。然后我们匹配任何不是关闭parens的字符。然后(?=\))前瞻断言后面的内容是一个右括号。

答案 1 :(得分:1)

试试这个

\(([^)]+)\)

<强> Fiddle Demo

  • \(:匹配左括号
  • (:开始捕获群组
  • [^)]+:匹配一个或多个非)个字符
  • ):结束捕获小组
  • \):匹配结束括号