gpt4 book ai didi

php - php 中的正则表达式- 从字符串中捕获 9 种类型的数字

转载 作者:可可西里 更新时间:2023-11-01 00:55:13 25 4
gpt4 key购买 nike

我刚开始编码,对 PHP 中的正则表达式有一些小问题。

我正在尝试从字符串中捕获以下数字类型。

000 000 00 00 -
000 000 00 0 -
000 000 00 -
000.000.00.00 -
000.000.00.0 -
000.000.00 -
0000000000 -
000000000 -
00000000 -

当然,0 代表 0-9 之间的数字。

这是我试过的模式:

$pattern = "/\d{3}[. ]\d{3}[. ]\d{2}[. ]?\d{1-2}?/";

这里有问题,但我不明白是什么?

你能帮帮我吗?

最佳答案

看来你可以用

/\b\d{3}([.\s]?)\d{3}\1\d{2}(?:\1\d{1,2})?\b/

参见 regex demo

详情

  • \b - 单词边界(如果数字可以粘在字母上或 _ 删除它或替换为 (?<!\d) )
  • \d{3} - 3 位数
  • ([.\s]?) - 一个可选的 .或空格,1 次或 0 次,捕获到第 1 组
  • \d{3} - 3 位数
  • \1 - 与第 1 组相同的值
  • \d{2} - 2 位数字
  • (?:\1\d{1,2})? - 一个可选的序列
    • \1 - 与第 1 组相同的值
    • \d{1,2} - 1 或 2 位数字
  • \b - 尾部单词边界(根据实际需要删除/替换(?!\d))。

在 PHP 中:

$contents = file_get_contents('test.txt');
$pattern = '/\b\d{3}([.\s]?)\d{3}\1\d{2}(?:\1\d{1,2})?\b/';
preg_match_all($pattern, $contents, $results);
print_r($results);

注意模式周围的单引号:如果您改用双引号,则必须将反斜杠加倍(至少使用 \1 ),因为 "\1" '\1' 定义八进制数 1 的字符将被解析为反斜杠和 1 .

关于php - php 中的正则表达式- 从字符串中捕获 9 种类型的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47519224/

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