0

我想知道如何从这个字符串中获取标识符 number1 和 number2。

NAME  IDENTIFIER-NUMBER1-NUMBER2

例子:

John Doe ABC-3901-11801

我想将 IDENTIFIER NUMBER1 和 NUMBER2 分别放入不同的变量中。

但问题是我并不总是知道它在什么位置,或者它后面是否有额外的文本,如下所示:

Blablabla ABC-3901-11801 John Doe Blablabla

ofc 也可以有不同的数字和字母:

XYZ-46781-28102

谁能解释一下如何在 php.ini 中找到这些变量。

提前致谢

4

1 回答 1

1

假设:

  • 标识符始终为大写
  • 标识符总是由 3 个字母组成
  • Number1 只有数字并且总是以破折号开头
  • Number2 只有数字并且总是以破折号开头

这个正则表达式可以工作->'/([A-Z]{3})-([0-9]*)-([0-9]*)/'

例子:

$data = 'Blablabla ABC-3901-11801 John Doe Blablabla';
preg_match_all('/([A-Z]{3})-([0-9]*)-([0-9]*)/', $data, $matches, PREG_PATTERN_ORDER);
var_dump($matches);

这将输出

array
  0 => 
    array
      0 => string 'ABC-3901-11801' (length=14)
  1 => 
    array
      0 => string 'ABC' (length=3)
  2 => 
    array
      0 => string '3901' (length=4)
  3 => 
    array
      0 => string '11801' (length=5)
  • $matches[1] 始终是标识符
  • $matches[2] 总是 number1
  • $matches[3] 总是 number2

编辑:这也是一个更通用的正则表达式:

/([A-Za-z]*)-([0-9]*)-([0-9]*)/

这仅假设 IDENTIFIER 仅包含字母(任何数字,大写或小写)

例如,这个正则表达式在这种情况下有效

Blablabla abcdef-3901-11801 John Doe Blablabla
于 2012-08-01T10:46:05.863 回答