PHP preg_match_all

发布于 2024-12-29 04:39:51 字数 386 浏览 2 评论 0原文

我想问一下php的preg_match_all。假设我们有下面的示例字符串:

这是一个包含 -value1- 和 -_value_2_- 的子句,其子子句包含 -value.3- 项。

我想提取所有以“-”开头和“-”结尾的字符串。所需的输出应该是:

Array  
(
[0] => Array  
    (
            [0] => -_value1_-  
            [1] => -_value_2_-  
            [2] => -_value.3_-  
        )  
)

I would like to ask about php's preg_match_all. suppose we have the sample string below:

This is a clause with -value1- and -_value_2_- having a subclause of -value.3- items.

And i would like to extract all strings with the opening "-" and closing "-" characters. Needed output should be:

Array  
(
[0] => Array  
    (
            [0] => -_value1_-  
            [1] => -_value_2_-  
            [2] => -_value.3_-  
        )  
)

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

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

发布评论

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

评论(4

花辞树 2025-01-05 04:39:51

使用以下简单正则表达式之一 /-.*?-//-.*-/U

U (PCRE_UNGREEDY) 该修饰符反转了
量词,使它们默认不是贪婪的,而是变得贪婪的
如果后面跟着?。它与 Perl 不兼容。也可以设置
通过模式中的 (?U) 修饰符设置或通过问号
位于量词后面(例如 .*?)。

Use one of the following simple regexps /-.*?-/ or /-.*-/U

U (PCRE_UNGREEDY) This modifier inverts the "greediness" of the
quantifiers so that they are not greedy by default, but become greedy
if followed by ?. It is not compatible with Perl. It can also be set
by a (?U) modifier setting within the pattern or by a question mark
behind a quantifier (e.g. .*?).

自演自醉 2025-01-05 04:39:51

您可以使用此代码:

$str="This is a clause with -value1- and -_value_2_- having a subclause of -value.3- items.";
if (preg_match_all('/-[^-]*-/', $str, $m))
      print_r($m[0]);

You can use this code:

$str="This is a clause with -value1- and -_value_2_- having a subclause of -value.3- items.";
if (preg_match_all('/-[^-]*-/', $str, $m))
      print_r($m[0]);
梨涡少年 2025-01-05 04:39:51

有时 preg_match_all() 可能过于复杂。在这些情况下,您可以使用 explode 来实现此目的。

$matches = explode("-", $input);

explode() 的作用是什么?

$input = "This is a basic example: -JOHN-. The End";

explode()$matches 转换为数组。之后,在 $input 中搜索“-”字符。找到“-”后,它将设置如下所示的数组。

$input[0] ---> “这是一个基本示例:”

$input[1] ---> “约翰”

$input[2] ---> “.The End”

explode()是另一种方式。但最好的当然是 preg_match_all()

Sometimes preg_match_all() can be too complicated. In these cases you can use explode for this aim.

$matches = explode("-", $input);

What explode() does?

$input = "This is a basic example: -JOHN-. The End";

explode() converts $matches to an array. After that searches $input for "-" character. After finding the "-" it will set array like below.

$input[0] ---> "This is a basic example: "

$input[1] ---> "JOHN"

$input[2] ---> ". The End"

explode() is an alternative way. But the best one is of course preg_match_all()

作妖 2025-01-05 04:39:51

您可以使用 T-Regx 库 自动添加分隔符,

pattern('-.*?-')->match($string)->all();

结果是

Array  
(
      [0] => -_value1_-  
      [1] => -_value_2_-  
      [2] => -_value.3_-  
) 

You could use T-Regx library that automatically adds delimiters

pattern('-.*?-')->match($string)->all();

the result is

Array  
(
      [0] => -_value1_-  
      [1] => -_value_2_-  
      [2] => -_value.3_-  
) 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文