php:正则表达式和插入符号

时间:2013-03-20 21:21:48

标签: php regex

所以我试图制作一个正则表达式来包含文本的课程内容,但排除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号法律管理员和院长的批准。“

1 个答案:

答案 0 :(得分:0)

如果你想匹配除了最后一部分以外的所有数字和文本,你可以试试这个:

'/([\s\S]+)(?=\d{3}\..+)/'
  • [\s\S]+匹配所有内容 - 包括空白和非空白
  • (?=)执行Positive Lookahead。它与括号中的内容不匹配,但它确保括号前的内容在括号中跟随。
  • \d{3}\..+匹配3位数后跟一个点和其他一些没有新行的字符。