preg_match 不捕获内容

发布于 2024-12-17 19:57:33 字数 229 浏览 0 评论 0原文

我的 preg_match 有什么问题吗?

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

我想从这里获取所有CONTENT

numVar("XYZ-CONTENT");

感谢您的帮助!

what is wrong with my preg_match ?

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

I want to get all the CONTENT from here:

numVar("XYZ-CONTENT");

Thank you for any help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

街角卖回忆 2024-12-24 19:57:33

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

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

试试这个:

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

var_dump($results);

I assume this is PHP? If so there are three problems with your code.

  1. PHP's PCRE functions require that regular expressions be formatted with a delimiter. The usual delimiter is /, but you can use any matching pair you want.
  2. You did not escape your parentheses in your regular expression, so you're not matching a ( character but creating a RE group.
  3. You should use non-greedy matching in your RE. Otherwise a string like numVar("XYZ-CONTENT1");numVar("XYZ-CONTENT2"); will match both, and your "content" group will be CONTENT1");numVar("XYZ-CONTENT2.

Try this:

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

var_dump($results);
蓝天 2024-12-24 19:57:33

将示例字符串粘贴到 http://txt2re.com 中并查看 PHP 结果。

它将表明您需要转义对正则表达式引擎具有特殊含义的字符(例如括号)。

Paste your example string into http://txt2re.com and look at the PHP result.

It will show that you need to escape characters that have special meaning to the regex engine (such as the parentheses).

一紙繁鸢 2024-12-24 19:57:33

你应该转义一些字符:

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

You should escape some chars:

preg_match('numVar\("XYZ-(.*)"\);',$var,$results);
梦巷 2024-12-24 19:57:33
preg_match("/XYZ\-(.+)\b/", $string, $result);
print_r($result[0]); // full matches ie XYZ-CONTENT
print_r($result[1]); // matches in the first paren set (.*)
preg_match("/XYZ\-(.+)\b/", $string, $result);
print_r($result[0]); // full matches ie XYZ-CONTENT
print_r($result[1]); // matches in the first paren set (.*)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文