我正在编写一些代码来分解将使用以下格式复制和粘贴的测试的全文:
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。 等
答案 0 :(得分:2)
我认为最好将multiline
标记与^
:
$questions = preg_split('/^ *[0-9]+\. +/m', $_POST[test]);
答案 1 :(得分:0)
使用^指定它是行的开头,使用g
和m
修饰符指定全局和多行:
/^[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];