我正在尝试使用 PHP 中的正则表达式解析 .X12 文件中的一些数据。该模式是大写字母 FS
后跟 13 个数字字符。
以下是一些文本的示例:PROCURMENT333RFQ3PO100011EAFS8340015381823PKGFSHALL
我需要从其他文件中提取“FS8340015381823”以及 13 个数字字符的其他变体。
这是对我不起作用的代码:
$regex = '/FS[0-9]{13}?/';
preg_match( $regex, $x12, $matches );
var_dump( $matches );
我也尝试过这些正则表达式模式:
$regex = '/FS8340015381823/';
$regex = '/FS\d{13}?/';
如果我在执行 preg_match()
之前将上面的示例字符串存储到 $x12 变量,那么所有这些正则表达式都可以正常工作,但当我加载内容时,它们不适用于原始文件。当我回显
.X12 文件内容到屏幕时,我看到了上面示例中使用的确切字符串。如果我使用正则表达式 /FS/
,它会找到“FS”。
此正则表达式适用于原始文件数据,但返回的匹配项不仅仅是“FS”之后的数字字符:
$regex = '/FS.{13}?/';
我的机器上的终端是否未显示奇怪的字符?我在 Amazon EC2 上运行 Linux CentOS。
最佳答案
感谢@HamZa的帮助以及用于分解他的数据的OP。
您可以使用 /FS\x1d[0-9]{13}/
或 /FS\x1d\d{13}/
如果数据中有多个十六进制
,则可以使用字符类。
/FS[\x00-\x1f]\d{13}/
关于php - 在 PHP 中使用正则表达式解析 .X12 文件以查找大写字母 'FS' 后跟 13 个数字时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243466/