php - preg_match 不捕获内容

标签 php preg-match match preg-match-all

我的 preg_match 有什么问题吗?

preg_match('numVar("XYZ-(.*)");',$var,$results);

我想从这里获取所有内容:

numVar("XYZ-内容");

感谢您的帮助!

最佳答案

我认为这是 PHP?如果是这样,您的代码存在三个问题。

  1. PHP 的 PCRE 函数要求使用分隔符格式化正则表达式。通常的分隔符是 /,但您可以使用任何您想要的匹配对。
  2. 您没有在正则表达式中转义括号,因此您没有匹配 ( 字符,而是创建了 RE 组。
  3. 您应该在 RE 中使用非贪婪匹配。否则,像 numVar("XYZ-CONTENT1");numVar("XYZ-CONTENT2"); 这样的字符串将匹配两者,并且您的“内容”组将是 内容1");numVar("XYZ-内容2

试试这个:

$var = 'numVar("XYZ-CONTENT");';
preg_match('/numVar\("XYZ-(.*?)"\);/',$var,$results);

var_dump($results);

关于php - preg_match 不捕获内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274626/

相关文章:

regex - perl6正则表达式匹配连词&&

php - 在 PHP 变量中定义 html 代码

php - 在 web2py 中保留文件上传 html 表单

php - 正则表达式获取前后N个词

php - 允许的命名子模式字符

jquery - 使用包含选择器通过 jquery 突出显示确切的字符串

php - 将姓名和电话发送到 Paypal Checkout

php - 如何使用 pdo 发送数组以在 smarty 3.1.21 的 html_options 中使用它

php - preg_match 字符串中的所有单词

python删除C函数体