我需要一些帮助。我想要的是忽略特定字符串中的逗号。它是一个逗号分隔的文件csv,但名称有一个逗号,我需要忽略它。
我得到的是
<?php
$pattern = '/([\\W,\\s]+Inc.])|[,]/';
$subject = 'hypertext language, programming, Amazon, Inc., 100';
$limit = -1;
$flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE;
$result = preg_split ($pattern, $subject, $limit, $flags);
?>
结果是
$result (php code):
<?php
array (
0 => 'hypertext language',
1 => ' programming',
2 => ' Amazon',
3 => ' Inc.',
4 => ' 100',
);
?>
我希望结果是
$result (php code):
<?php
array (
0 => 'hypertext language',
1 => ' programming',
2 => ' Amazon, Inc.',
3 => ' 100',
);
?>
感谢您的帮助:)
答案 0 :(得分:3)
请注意[\W,\s]
= \W
,因为\W
匹配任何不是字母,数字或下划线的字符。但是,您似乎只想拆分,
未跟随空格* + Inc.
。
您可以使用negative lookahead来实现此目的:
/,(?!\s*Inc\.)/
^^^^^^^^^^^^
请参阅regex demo
(?!\s*Inc\.)
如果有0个以上的空格(,
),后跟一系列文字字符\s*
,则Inc.
匹配将失败。
答案 1 :(得分:1)
在您的教程中,如果我将Amazon信息作为CSV提取,我将获得以下格式。然后您可以使用Php的一个本机函数进行解析。这表明您不需要使用explode或regex来处理这些数据。使用正确的工具:
<?php
$csv =<<<CSV
"amzn","Amazon.com, Inc.",765.56,"11/2/2016","4:00pm","-19.85 - -2.53%",10985
CSV;
$array = str_getcsv($csv);
var_dump($array);
输出:
array (size=7)
0 => string 'amzn' (length=4)
1 => string 'Amazon.com, Inc.' (length=16)
2 => string '765.56' (length=6)
3 => string '11/2/2016' (length=9)
4 => string '4:00pm' (length=6)
5 => string '-19.85 - -2.53%' (length=15)
6 => string '10985' (length=5)