在PHP中使用正则表达式解析.X12文件以查找大写字母';FS';后面正好是13个数字


Problems parsing an .X12 file with a Regular Expression in PHP to find the capital letters 'FS' followed by exactly 13 numbers

我正在尝试使用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}?/';

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

此regexc处理原始文件数据,但返回的匹配项不仅仅是"FS"后面的数字字符:

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

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

感谢@HamZa和OP对他的数据进行了分解。

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

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

/FS['x00-'x1f]'d{13}/