内联注释 (?#comment)

语法:(?#这里写注释文字)

  • 属于扩展分组语法引擎直接忽略括号内部全部文字,完全不参与匹配,只给人阅读看。
  • 不会捕获内容、不产生分组编号、不能反向引用。

示例1,IP分段加上注释

2[0-4]\d(?#200‑249)|25[0‑5](?#250‑255)|[01]?\d\d?(?#0‑199)
Code language: PHP (php)
  • (?#200‑249):注释,告诉阅读者这一段匹配200~249,正则执行直接跳过这段文字
  • 整个正则匹配逻辑完全不变,可读性大幅提升。

示例2,给零宽断言例子加注释

\b\w+(?=ing\b)(?#匹配ing结尾单词,结果不含ing)
Code language: PHP (php)

(?#匹配ing结尾单词,结果不含ing) 仅作为备注,不影响匹配。

另一种注释方式

VERBOSE模式(x标志 / (?x)

开启verbose模式后,正则里面普通空格会被忽略,用 # 做行注释:

(?:
  2[04]\d    # 200‑249
  |25[05]    # 250‑255
  |[01]?\d\d? # 0‑199
)
Code language: PHP (php)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注