0

所以我正在尝试制作一个正则表达式来包含文本的课程内容,但不包括后跟句点和一些文本的 3 位数字。基本上,我试图将课程文本分成单独的课程线,以便最终得到一个数组,其中每个元素都有一个课程的课程信息。

例如,假设我们有:

$text = "295. 学生发起的课程或项目。(1-2) 对完成第一年课程的学生开放。临床工作、实地工作、法律援助、个人研究和写作、专业写作或编辑sional 期刊、学生讲授的课程或其他具有严肃教育性质的法律项目。需要得到 Law 295 管理员和院长的批准。296. Legal Dissertation。(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. Legal Dissertation. (8-13)”部分,以便

"295. 学生发起的课程或项目。(1-2) 向已完成第一年课程的学生开放。临床工作、实地工作、法律援助、个人研究和写作、专业期刊的写作或编辑,学生授课的课程,或其他具有严肃教育性质的法律项目。需要获得第 295 号法律管理员和院长的批准。

4

1 回答 1

0

如果您想将除最后一部分之外的所有内容与数字和文本匹配,您可以尝试以下操作:

'/([\s\S]+)(?=\d{3}\..+)/'
  • [\s\S]+匹配所有内容 - 空格和非空格
  • (?=)执行Positive Lookahead。它与括号中的内容不匹配,但它确保括号之前的内容跟在括号中的 this 后面。
  • \d{3}\..+匹配 3 位数字,后跟一个点和其他一些不带换行符的字符。
于 2013-03-20T21:25:53.330 回答