Php 解析文本文件的行,其中值由不同数量的空白字符分隔

Php 解析文本文件的行,其中值由不同数量的空白字符分隔,php,regex,string,text-parsing,array-column,Php,Regex,String,Text Parsing,Array Column,我需要获得不同数组中的公司名称及其股票代码。以下是存储在txt文件中的我的数据: 3M Company MMM 99 Cents Only Stores NDN AO Smith Corporation AOS Aaron's, Inc. AAN 等等 如何使用正则表达式或其他技术实现此目的?尝试以下正则表达式: (.+)\s*([A-Z]{3})$ ^(.+?)\s+([A-Z]+)$ 也许有更多PHP经验的人可以使用或类似的方法充实代码示例。迭代每一行,并使用

我需要获得不同数组中的公司名称及其股票代码。以下是存储在txt文件中的我的数据:

3M Company      MMM
99 Cents Only Stores    NDN
AO Smith Corporation    AOS
Aaron's, Inc.   AAN
等等


如何使用正则表达式或其他技术实现此目的?

尝试以下正则表达式:

(.+)\s*([A-Z]{3})$
^(.+?)\s+([A-Z]+)$

也许有更多PHP经验的人可以使用或类似的方法充实代码示例。

迭代每一行,并使用正则表达式收集数据:

(.+)\s*([A-Z]{3})$
^(.+?)\s+([A-Z]+)$
反向参考
$1
将包含公司名称,
$2
将包含股票代码


还可以使用两个或三个空格分隔符将字符串一分为二,并修剪生成的两个字符串。只有当您确定公司名称和股票代码符号之间始终有足够的空格,并且公司名称本身不包含那么多空格时,此选项才有效。

文本文件的格式是强制要求您的吗?如果您可以选择,我建议您不要使用空格分隔文本文件中的字段。相反,使用|或$$或您可以保证不会出现在内容中的内容,然后将其拆分为一个数组。

使用可变空格作为两列文本之间的分隔符,有几种方法可以做到这一点

您可以使用
file()
逐行处理文本文件,并使用
preg\u split()
在变量空间上分隔文本,这些变量空间后跟一系列大写字母,后跟字符串的结尾,或者您可以使用
file\u get\u contents()
使用
preg\u match\u all()
然后使用
array\u column()
提取两个捕获的列。虽然后者可能会更快一些,因为它只进行1
preg\uu
函数调用,但决策可能归结为开发人员的编码品味和输入文本的复杂性

代码:()

或:

/$text=file_get_contents('your_text_file.txt');
$text=