在preg_match检测到特定字符后,从字符串中获取特定数字

时间:2018-05-31 08:22:44

标签: php regex

我想在字符串“NPWP”之后剪切数字,然后取出所有数字。

有时我会有这样的字符串:

df.ex <- df.ex %>% group_by(id) %>% mutate(var2 = if_else(var1 %in% 'b', 'foo','bar'))

有时这样:

$valueDetail['DTL02CNA'] = NPWP:016386112436000 JALAN ELANG DESA SUKAHATI CITEUREUP BOGOR 16810, INDONESIA TEL:+62(21)8765105

从上面的例子中,我需要这样的结果:

$valueDetail['DTL02CNA'] = NPWP 314633389431000 DELTA SILICON INDUSTRIALL PARK 3 JL PINANG F 16/25A, CICAU CIKARANG PUSAT, CITY: BEKASI, JB 17550 INDONESIA

现在,我只知道如何识别它

016386112436000
314633389431000

3 个答案:

答案 0 :(得分:1)

从字符串^的开头匹配,匹配NPWP后跟可选的冒号:?和零个或多个空格字符\s*

然后,您可以使用\K重置报告的匹配的起点,并匹配一个或多个数字\d+

^NPWP:?\s*\K\d+

Demo

另一种选择可能是在第一个捕获组(\d+)中匹配捕获您的值:

^NPWP:?\s*(\d+)

Demo

答案 1 :(得分:0)

您可以使用RegEx (?<=NPWP[^\d]*)\d+

  • (?<=NPWP[^\d]*)确保在比赛前有NPWP和除数字之外的任何内容

  • \d+至少匹配一次任何数字

Demo.

答案 2 :(得分:0)

如果您的字符串NPWP和数字是确切的长度,请使用substr()

$number = substr($valueDetail['DTL02CNA'], 5, 15);