【问题标题】:Regex for getting specific groups用于获取特定组的正则表达式
【发布时间】:2013-01-28 14:07:37
【问题描述】:

我需要一个正则表达式语法来获取字符串中以“%”字符分隔的特定组。我以这个字符串为例:

%David davidson%你好,我也可以存储 1000 个数字%anotherchain%你好吗!?%

我想将这样的匹配项存储在不同的 PHP 变量中

$var1 = david davidson;
$var2 = Hello I can store numbers;

...等

但我不知道如何获取特定的字符组(例如获取不以符号或 % 符号开头的第二个匹配项)

我尝试使用此代码%.*?(%),但它只返回第一个和第三个匹配项,但我实际上想选择特定组

我在 google 和 here 上搜索过,但没有找到与我需要的答案有点相符的答案,可能是因为我不知道需要搜索的关键字才能获得好的答案

【问题讨论】:

  • 如果分隔符总是%,你可以使用$vars = explode('%', $string);
  • 卡洛斯的回复打败了我。

标签: php regex


【解决方案1】:

你可以使用

preg_match_all('/[^%]+/sim', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];
print_r($result);

这会给你:

  • 大卫·戴维森
  • 您好,我也可以存储 1000 个号码
  • 另一条链
  • 你好吗!?

    [^%]+

这意味着在正则表达式中,除“%”之外的每个字符

【讨论】:

  • 似乎preg_split 变体在这里可能更有意义。
  • 为什么不直接str_replace('%', '', $string);
  • preg_match_all 更好,因为他希望将组作为一个数组。但是 preg_split 也可以使用
  • @user1477388 他想获取字符串的某些部分而不是更改值。他可以使用explode("%",$array);但这会给出两个空键(用于开始结束 %)。
  • 哇!!布伦德发布的内容就像一个魅力!非常感谢这个!我花了 2 个多小时来弄清楚如何获得它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 2019-10-08
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 2022-08-08
  • 2012-10-12
相关资源
最近更新 更多