如何为后跟特定字符串的日期编写 preg_match?

How to write preg_match for a date followed by specific string?

我想从多个 HTML 文档中提取日期。日期始终遵循以下模式:

  1. 从月份的三个字母开始,第一个字符大写 即一月
  2. 日期的两位数字字符,即 09
  3. 逗号作为分隔符
  4. 年份的四位数字字符,即 2022 年。

完整日期示例为 2022 年 1 月 9 日

我只想提取那些包含在 span 标签中的日期。所以,完整的模式是

<span>Jan 09, 2022</span>

我不擅长写作preg_match。谁能帮帮我?

<span>(\w{3} \d{1,2}, \w{4})<\/span>

\w 是集合 [a-zA-Z0-9_] 的 meta-character。

{3}表示三次。

\d 是集合 [0-9] 的 meta-character。

{1,2}表示一次或两次。

试一试https://regex101.com/r/tNRa73/1

$pattern = '/<span>(\w{3} \d{1,2}, \w{4})<\/span>/'; 

preg_match(
  $pattern,
  $html,
  $matches // <-- The results will be added to this new variable.
);

$matches[1]; // The date will be in the first index because it was
             // the first "capture group" i.e set of parens.


// If you expect multiple dates in one HTML document, then use:
preg_match_all(
  $pattern,
  $html,
  $matches
);

$matches[1]; // Now, the first index is an array of matches of
             // the first "capture group".