所以我试图制作一个正则表达式来包含文本的课程内容,但排除3位数后跟一个句号和一些文本。基本上我正在尝试将课程文本划分为单独的courselines,这样我最终会得到一个数组,其中每个元素都有一个类的courseinfo。
例如,假设我们有:
$ text =“295。学生发起的课程或项目。(1-2) 向已完成第一年课程的学生开放。临床工作,实地工作,法律援助,个人研究和写作,写作或编辑专业期刊,学生教授课程,或其他严肃,教育性质的法律项目。需要第295号法律管理员和院长的批准。 296.法律论文。 (8-13)“
和这个巨大的正则表达式:
$lineDelimiter = ='/(?:[0-9]{3}(?:\.5|\-[1-5])?[A-Z]?)(?:\-[0-9]{3}(?:\.5|\-[0-9])? [A-Z]?)?\.\s*.+\.\s*(?:(?:\([0-9]+\-*[0-9]*\))(?:\s*or\s*\([0-9]+\-*[0-9]*\))?)?\s*(?:Prerequisite)?.+(?:\n.+)?\.\n?(?:\s*Mr\.\s.+,?|\s*Ms\.\s.+,?|\s*Dr\.\s.+,?|\s*The\sFaculty.*,?)*[^(?:[0-9]{3}\..+)]/';
巨型正则表达式的最后一部分,由
组成'/[^(?:[0-9]{3}\..+)]/'
我preg_match_all时出现错误。
我试图排除“296.法律论文。(8-13)”部分,以便它将
“295。学生发起的课程或项目。(1-2) 向已完成第一年课程的学生开放。临床工作,实地工作,法律援助,个人研究和写作,写作或编辑专业期刊,学生教授课程,或其他严肃,教育性质的法律项目。需要得到第295号法律管理员和院长的批准。“
答案 0 :(得分:0)
如果你想匹配除了最后一部分以外的所有数字和文本,你可以试试这个:
'/([\s\S]+)(?=\d{3}\..+)/'
[\s\S]+
匹配所有内容 - 包括空白和非空白(?=)
执行Positive Lookahead
。它与括号中的内容不匹配,但它确保括号前的内容在括号中跟随。\d{3}\..+
匹配3位数后跟一个点和其他一些没有新行的字符。