数字1-100上的PHP PREG_SPLIT

时间:2013-12-03 21:42:31

标签: 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 after spending $214.

我正在使用以下preg_split:

$questions = preg_split("/[0-9]+\./", $_POST[test]);

我的问题出现在#45这样的问题中,问题本身就有数字,然后是一段时间。

我只想匹配数字1-100后跟一段时间。例如。

1。 2。 3。 4。 5。 等

4 个答案:

答案 0 :(得分:2)

我认为最好将multiline标记与^

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

1到100之间的数字,后跟句点,可以通过

匹配
/\b(?:100|[1-9][0-9]?)\./

但如果实际规则要匹配行首的数字,请使用

/^\d+\./m

答案 3 :(得分:0)

您可以改为使用preg_match_all()

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