You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP7.4正则表达式提取问题:处理含多空格的目标内容

解决PHP7.4正则提取需求的方案

针对你的场景,核心是要捕获冒号后单个空格开始的内容,直到遇到连续两个及以上空格或行尾为止,同时保留内容里的单个空格。可以用以下正则表达式解决:

$pattern = '%^Numer właściciela: (?<owner_id>.+?)(?=\s{2}|$)%imu';

正则说明:

  • ^Numer właściciela: 精准匹配每行开头的固定前缀文本
  • 匹配冒号后的单个空格(如果前缀后可能出现其他空白符,可替换为[[:space:]])
  • (?<owner_id>.+?) 命名捕获组owner_id,+?是非贪婪匹配,确保不会过度匹配到后面的无关内容
  • (?=\s{2}|$) 正向前瞻断言,当匹配到连续两个空格或者行尾时停止捕获,完美避开后面的地址内容
  • 修饰符m开启多行模式,让^和$匹配每行的首尾;u支持Unicode字符(适配波兰语特殊字符);i可选,若前缀大小写不固定可保留,否则可移除

PHP代码示例:

$text = <<<TEXT
Numer właściciela: NOWAKOWSKA                                              01-234 Warsaw
Numer właściciela: NOWAK_S6_2
Numer właściciela: KOWALSKA_S6_                                            01-234 Warsaw
Numer właściciela: NOWACKI S6_                                             01-234 Warsaw
TEXT;

preg_match_all($pattern, $text, $matches);
$ownerIds = $matches['owner_id'];

// 输出结果
foreach ($ownerIds as $id) {
    echo $id . "\n";
}

运行后会输出你需要的结果:

NOWAKOWSKA
NOWAK_S6_2
KOWALSKA_S6_
NOWACKI S6_

内容的提问来源于stack exchange,提问作者mkrowiarz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:55:18