【问题标题】:Regex that match any character inside a parenthesis匹配括号内任何字符的正则表达式
【发布时间】:2014-06-10 07:14:32
【问题描述】:

尝试创建一个匹配括号内任何字符的正则表达式。

我的正则表达式模式是这样的

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

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

已经在这里测试过了。 http://regex101.com

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

【问题讨论】:

  • 您打算使用哪种编程语言?你有(Nested (parentheses))吗?
  • 我用的是PHP,没有嵌套括号
  • . 也匹配空格,您能否发布可以重现您的问题的整个代码?
  • 好的。你想匹配(the parentheses too),还是只匹配(what's inside?)
  • 你试过 preg_match_all

标签: php regex


【解决方案1】:

试试这个

\(([^)]+)\)

Fiddle Demo

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

【讨论】:

  • 似乎有同样的问题,。我试图 var_dump 匹配的值.. 我得到的只是空值,
【解决方案2】:

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

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

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

  1. 第一个只匹配一个左括号、任何不是右括号的字符和一个右括号。
  2. 第二个使用后向和前瞻。首先(?<=\()lookbehind 断言前面是一个左括号。然后我们匹配任何不是右括号的字符。然后(?=\)) 前瞻断言后面是右括号。

【讨论】:

    猜你喜欢
    • 2012-01-21
    • 2017-09-15
    • 1970-01-01
    • 2016-02-13
    • 2011-07-18
    • 1970-01-01
    • 2018-04-04
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多