簡體   English   中英

正則表達式多次匹配多行而不匹配日期和時間

[英]Regex matching multiple lines multiple times without matching date and time

正則表達式多次匹配多行

\s*([^:]+?)\s*:\s*(.*(?:\s*(?!.*:).*)*)\s* 

此解決方案匹配日期和時間字符串。

如何修改上述解決方案,使日期和時間包含在描述中:header?

Name: John Doe

Age: 23

Primary Language: English

Description: This is a multiline
description field that I want 
to capture Fri, 02 Sep 2022 14:46:45 -0500

Country: Canada

一個選項可能是在冒號前的第一部分排除匹配逗號:

^([^,:\n\r]+):(.*(?:\R(?![^,:\n\r]+:).*)*)

正則表達式演示

另一種選擇可能是斷言要匹配的下一行不只包含一個冒號:

^([^:\n\r]+):(.*(?:\R(?![^:\n\r]+:[^:\n\r]*$).*)*)

解釋

  • ^字符串開頭
  • ([^:\n\r]+)捕獲組 1 ,匹配除:或換行符以外的 1+ 個字符
  • :從字面上匹配
  • (捕獲組 2
    • .*匹配線的rest
    • (?:非捕獲組
      • \R匹配任何 unicode 換行序列
      • (?:[^:\n\r]+:[^:\n\r]*$)斷言該行不包含單次出現的:
      • .*匹配整行
    • )*關閉非捕獲組並可選擇重復它以匹配所有行
  • )關閉第 2 組

請參閱正則表達式演示PHP 演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM