gpt4 book ai didi

php - 如何将组与 preg_match 一起使用?

转载 作者:搜寻专家 更新时间:2023-10-31 21:26:19 25 4
gpt4 key购买 nike

我有一些数据将是以下之一

Word Number Word Number  Word Number Word Word Number  Word Word Number Word Number  Word Word Number Word Word Number

我想提取单词直到数字和数字。这是我目前拥有的(对我来说看起来不错,但我不完全理解正则表达式)。

    preg_match('/([A-Za-z ])([0-9])([A-Za-z ])([0-9])/', $game, $info);    print_r($info);

但是,数组是空的。我知道我以前见过 ^+$ 但我不太确定如何将它用于正则表达式。

最佳答案

为了将字符串与您描述的格式相匹配,您需要

preg_match_all('/^([a-z]+(?:\s+[a-z]+)?)\s+([0-9]+)\s+([a-z]+(?:\s+[a-z]+)?)\s+([0-9]+)$/im', $game, $info);

查看 regex demo

IDEONE demo:

$re = '~^([a-z]+(?:\s+[a-z]+)?)\s+([0-9]+)\s+([a-z]+(?:\s+[a-z]+)?)\s+([0-9]+)$~im'; 
$game = "Word 123 Word 456\nWord 1234 Word Word 3456\nWord Word 3455 Word 4566\nWord Word 4434 Word Word 44332";
preg_match_all($re, $game, $info);
print_r($info);

正则解释:

  • ^ - 字符串的开始
  • ([a-z]+(?:\s+[a-z]+)?) - 第 1 组用于 Word WordWord 模式
  • \s+ - 一个或多个空格
  • ([0-9]+) - Number 的第 2 组
  • \s+ - 一个或多个空格
  • ([a-z]+(?:\s+[a-z]+)?) - Word WordWord 模式的第 3 组
  • \s+ - 一个或多个空格
  • ([0-9]+) - Number 模式的第 4 组
  • $ - 字符串结尾

/i 修饰符使模式不区分大小写。 /m 修饰符仅用于测试(它使 ^$ 匹配 line 的开始和结束,不是整个字符串)。

[a-z]+(?:\s+[a-z]+)? 子模式表示 *用 [a-z]+ 匹配一个或多个字母,然后匹配一个一个或多个空格 (\s+) 后跟一个或多个字母 ([a-z]+) 的序列出现次数为零。因此,此模式有效匹配用空格分隔的 1 或 2 个单词

关于php - 如何将组与 preg_match 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35469675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com