0

例如,我有类似的东西

对什么是对什么是错的标准的研究被称为_

一个。纯科学

湾。应用科学

C。伦理

d。技术

...未知数量的选择...

答案:C

我想把它分成

['The study of standards for what is right and what is wrong is called _____.',
'pure science',
'applied science',
'ethics',
'technology',

... as many array elements as there are choices ... 

'ANS: C']

我可以使用一个正则表达式来处理任意数量的选择吗?如果没有,您将如何在 Javascript 或 PHP 中执行此操作?

4

2 回答 2

1

是否保证每个解决方案之间都有换行符?的...

中,您可以使用以下解决方案之一。

使用该split方法,您可以执行以下操作:

results = myString.split(/[\r\n]+/);

使用match()您可以执行以下操作的方法,这将匹配不是换行符的部分。

results = myString.match(/[^\r\n]+/g);

中,您可以使用以下解决方案之一完成您想要的任务。

$wanted = preg_split('~\R+(?!$)~u', $data);
print_r($wanted);

live working demo

\R匹配通用换行符;也就是说,任何被 Unicode 视为换行序列的东西。\v这包括由(vertical whitespace) 和多字符序列匹配的所有字符\x0D\x0A。要正确使用,您需要启用u修饰符。修饰符打开 PCRE的u附加功能,并且模式字符串被视为 UTF-8。

我在 with (end of line) 之后使用了否定的前瞻,$这样你就不会包含空白。

您可以在此处使用否定来避免使用拆分和匹配。

$wanted = preg_match_all('~[^\r\n]+~', $data, $matches);
print_r($matches);

live working demo

输出

Array
(
    [0] => The study of standards for what is right and what is wrong is called _.
    [1] => a. pure science
    [2] => b. applied science
    [3] => c. ethics
    [4] => d. technology
    [5] => ... unknown number of choices ...
    [6] => ANS: C
)
于 2013-11-05T02:58:35.707 回答
0

我建议根据 EOL(\r\n\n)迭代每一行。然后您可以检查每一行以查看它是问题还是答案项目或答案。如果您想将所有内容放在一个数组中,则可以使用array_push().

还发现这可能会有所帮助:如何将字符串放入数组中,用新行分割?

基本上只是将每一行拆分为一个数组,如上所述:

$array = preg_split ('/$\R?^/m', $string);

于 2013-11-05T01:56:17.923 回答