0

だから私は正規表現を作成してテキストのコース内容を含めようとしていますが、3桁の数字とそれに続くピリオドといくつかのテキストを除外しています。基本的に、コーステキストを個々のコースラインに分割しようとしているので、すべての要素が1つのクラスのコース情報を持つ配列になります。

たとえば、次のものがあるとします。

$text = "295. Student-Initiated Courses or Projects. (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.Legal Dissertation.(8-13)」の部分を除外して、

「295. 学生主導のコースまたはプロジェクト。(1-2) 初年度のカリキュラムを修了した学生が対象。臨床研究、フィールドワーク、法的支援、個人の研究と執筆、専門誌の執筆または編集、学生が教えたコース、またはその他の深刻な教育的性質の法的プロジェクト。法 295 管理者および学部長の承認が必要です。」

4

1 に答える 1

0

最後の部分を除くすべてを番号とテキストに一致させたい場合は、次のようにします。

'/([\s\S]+)(?=\d{3}\..+)/'
  • [\s\S]+すべてに一致 - 空白と非空白の両方
  • (?=)を行いPositive Lookaheadます。括弧内のものとは一致しませんが、括弧の前のものの後に括弧内のこれが続くことを確認します。
  • \d{3}\..+3 桁の数字の後にドットと改行なしのその他の文字が続くものに一致します。
于 2013-03-20T21:25:53.330 に答える