【问题标题】:Separate/Group plain text with Regex and PHP使用正则表达式和 PHP 分隔/分组纯文本
【发布时间】:2019-12-17 05:19:51
【问题描述】:

我可以用正则表达式从下面的纯文本中分离数据。

【问题讨论】:

  • 感谢您为我们提供大量信息,这非常有用!不过,还有一个问题,您的预期输出究竟是什么?
  • 谢谢 Emre,您能否在您的问题中发布您期望的 JSON 格式的数据(这是典型的,以防链接断开 - 这样以后的用户也可以访问它!)。不过,我们绝对可以帮助您。很高兴看到一个新用户努力提出他们的问题:)
  • 我更新了我的问题。但我认为没有人可以提供帮助 :) 这个问题甚至不在主页上.. @ctwheels
  • 这非常有用,只是想确认一下,因为输出中有 90 而不是 190 - 我认为这是一个错字?
  • @ctwheels 是的,错字,缺少 1 号。我加了

标签: php r arrays json regex


【解决方案1】:

您可能会做的是使用preg_split 来获取所有以正确字符开头的字符串,例如190.AA.

\b(?=(?:\d+|[A-Z])\.[A-Z])
  • \b字边界
  • (?= 正向前瞻,断言右边是
    • (?:\d+|[A-Z]) 匹配 1+ 个数字或单个字符 A-Z
    • \.[A-Z] 匹配 . 和单个字符 A-Z
  • ) 关闭正向预测

Regex demo | Php demo

如果您在数组中包含所有这些条目,例如,您可以使用 array_reduce 来获取 json 输出所需的数组结构。

$pattern = "/\b(?=(?:\d+|[A-Z])\.[A-Z])/";
$result = preg_split($pattern, $data, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$result = array_reduce($result, function($carry, $item){

    // If the string starts with a digit
    if (ctype_digit(substr($item, 0, 1))) {

        // Create the  questions key
        $carry[] = ["question" => $item];
        return $carry;
    }

    // Get reference to the last added array in $carry
    end($carry);
    $last = &$carry[key($carry)];

    // Create the answers key
    array_key_exists("answers", $last) ? $last["answers"][] = $item : $last["answers"] = [$item];
    return $carry;
}, []);

print_r(json_encode($result))

输出

[
    {
        "question": "190.A 42-year-old male patient has been delivered to a hospital in a grave condition with dyspnea, cough with expectoration of purulent sputum, fever up to 39,5 oC.The ?rst symptoms appeared 3 weeks ago. Two weeks ago, a local therapist diagnosed him wi- th acute right-sided pneumonia. Over the last 3 days, the patient\u2019s condition deteriorated: there was a progress of dyspnea, weakness, lack of appetite. Chest radiography con?rms a rounded shadow in the lower lobe of the right lung with a horizontal?uid level, the right si- nus is not clearly visualized. What is the most likely diagnosis? ",
        "answers": [
            "A.Abscess of the right lung ",
            "B.Acute pleuropneumonia ",
            "C.Right pulmonary empyema ",
            "D.Atelectasis of the right lung ",
            "E.Pleural effusion "
        ]
    },
    {
        "question": "191.An 11-year-old boy complains of general weakness, fever up to 38,2 oC, pain and swelli- ng of the knee joints, feeling of irregular heartbeat. 3 weeks ago, the child had quinsy. Knee joints are swollen, the overlying skin and skin of the knee region is reddened, local temperature is increased, movements are li- mited. Heart sounds are muf?ed, extrasystole is present, auscultation reveals apical systolic murmur that is not conducted to the left ingui- nal region. ESR is 38 mm\/h. CRP is 2+, anti- streptolysin O titre - 40 0. What is the most likely diagnosis? ",
        "answers": [
            "A.Acute rheumatic fever ",
            "B.Vegetative dysfunction ",
            "C.Non-rheumatic carditis ",
            "D.Juvenile rheumatoid arthritis ",
            "E.Reactive arthritis "
        ]
    },
    {
        "question": "192.A 28-year-old male patient complains of sour regurgitation, cough and heartburn that occurs every day after having meals, when bending forward or lying down. These problems have been observed for 4 years. Objective status and laboratory values are normal. FEGDS revealed endoesophagitis. What is the leading factor in the development of this disease? ",
        "answers": [
            "A.Failure of the lower esophageal sphincter ",
            "B.Hypersecretion of hydrochloric acid ",
            "C.Duodeno-gastric re?ux ",
            "D.Hypergastrinemia ",
            "E.Helicobacter pylori infection "
        ]
    },
    {
        "question": "193.On admission a 35-year-old female reports acute abdominal pain, fever up to 38,8 oC, mucopurulent discharges. The pati- ent is nulliparous, has a history of 2 arti?cial abortions. The patient is unmarried, has sexual Krok 2 Medicine 20 14 24 contacts. Gynecological examination reveals no uterus changes. Appendages are enlarged, bilaterally painful. There is profuse purulent vaginal discharge. What study is required to con?rm the diagnosis? ",
        "answers": [
            "A.Bacteriologic and bacteriascopic studies ",
            "B.Hysteroscopy ",
            "C.Curettage of uterine cavity ",
            "D.Vaginoscopy ",
            "E.Laparoscopy"
        ]
    }
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2017-02-02
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多