Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PREG_在数字1-100上拆分_Php_Regex_Preg Split - Fatal编程技术网

PHP PREG_在数字1-100上拆分

PHP PREG_在数字1-100上拆分,php,regex,preg-split,Php,Regex,Preg Split,我正在编写一些代码来分解测试的全文,该测试将以以下格式复制和粘贴: 1. This is question number one. A. Answer 1 B. Answer 2 C. Answer 3 D. Answer 4 2. This is question number two. 3. This is another question, number three. 45. Ken has uses his money, $353. How much does he have aft

我正在编写一些代码来分解测试的全文,该测试将以以下格式复制和粘贴:

1. This is question number one.
A. Answer 1 
B. Answer 2
C. Answer 3
D. Answer 4
2. This is question number two.
3. This is another question, number three.

45. Ken has uses his money, $353. How much does he have after spending $214.
我正在使用以下预分割:

$questions = preg_split("/[0-9]+\./", $_POST[test]);
我的问题是像#45这样的问题,问题本身有数字,后面有句号

我只想匹配数字1-100,后跟一个句号。例如

一,。 2. 3. 4. 5.
etc

使用^指定它是行的开头,使用
g
m
修饰符指定全局和多行:

/^[0-9]+\.\s/m

我认为最好将
多行
标记与
^
一起使用:

$questions = preg_split('/^ *[0-9]+\. +/m', $_POST[test]);

一个介于1和100之间的数字,后跟一个句点,可以由

/\b(?:100|[1-9][0-9]?)\./
但如果实际规则是匹配行首的数字,则使用

/^\d+\./m

您可以改用
preg\u match\u all()

preg_match_all('~(?:^|\R)[0-9]+\. \K.+~', $_POST['test'], $matches);
$questions = $matches[0];

那么,如果你使用正常的人类词语,你会如何区分它们呢?你怎么能说数字1-100后面加句号不会出现在问题的任何地方?这些测试的分数是多少?我包含的测试问题只是一个例子。我不能发布我正在研究的实际试题,因为它们是受版权保护的材料@sln:它们是为高中生准备的整个文本是一个字符串PCRE不支持
/g
是吗?
/g
是Javascript不是PCRETouche?我想它是隐式的