2

我正在尝试使用 PHP 中的正则表达式解析 .X12 文件中的一些数据。该模式是大写字母FS后跟正好 13 个数字字符。

以下是一些文本的示例:PROCUREMENT333RFQ3PO100011EAFS8340015381823PKGFSHALL

我需要从其他文件中提取 'FS8340015381823' 和 13 个数字字符的其他变体。

这是对我不起作用的代码:

$regex = '/FS[0-9]{13}?/';
preg_match( $regex, $x12, $matches );
var_dump( $matches );

我也尝试过这些正则表达式模式:

$regex = '/FS8340015381823/';
$regex = '/FS\d{13}?/';

如果我在执行 a 之前将上面的示例字符串存储到 $x12 变量中,所有这些正则表达式preg_match()都可以正常工作,但是当我加载内容时它们对原始文件不起作用。当我echo将 .X12 文件内容显示在屏幕上时,我看到了我在上面用作示例的确切字符串。如果我使用正则表达式/FS/,它会找到“FS”。

此正则表达式适用于原始文件数据,但返回的匹配项不仅仅是“FS”之后的数字字符:

$regex = '/FS.{13}?/';

我机器上的终端没有显示奇怪的字符吗?我在 Amazon EC2 上运行 Linux CentOS。

4

1 回答 1

2

感谢@HamZa和 OP 的帮助,他分解了他的数据。

您可以使用/FS\x1d[0-9]{13}//FS\x1d\d{13}/

如果您hex的数据中有多个,则可以使用字符类。

/FS[\x00-\x1f]\d{13}/ 
于 2013-08-15T01:02:34.573 回答