我正在尝试使用PHP中的正则表达式解析.X12文件中的一些数据。该模式是大写字母FS
,后面正好跟有13个数字字符。
以下是一些文本的示例:PROCUREMENT333RFQ3PO100011EAFS8340015381823PKGFSHALL
我需要从其他文件中提取"FS8340015381823"和13个数字字符的其他变体。
以下是不适用于我的代码:
$regex = '/FS[0-9]{13}?/';
preg_match( $regex, $x12, $matches );
var_dump( $matches );
我也尝试过这些正则表达式模式:
$regex = '/FS8340015381823/';
$regex = '/FSd{13}?/';
如果我在执行preg_match()
之前将上面的示例字符串存储到$x12变量中,那么所有这些regex都可以正常工作,但当我加载内容时,它们对原始文件不起作用。当我echo
将.X12文件内容显示在屏幕上时,我会看到上面示例中使用的确切字符串。如果我使用正则表达式/FS/
,它会找到"FS"。
此regexc处理原始文件数据,但返回的匹配项不仅仅是"FS"后面的数字字符:
$regex = '/FS.{13}?/';
我机器上的终端没有显示奇怪的字符吗?我在亚马逊EC2上运行Linux。
感谢@HamZa和OP对他的数据进行了分解。
您可以使用/FSx1d[0-9]{13}/
或/FSx1dd{13}/
如果数据中有多个hex
,则可以使用一个字符类。
/FS[x00-x1f]d{13}/