【问题标题】:Regex to match everything between hash tags, multiline (PHP)正则表达式匹配哈希标签之间的所有内容,多行(PHP)
【发布时间】:2014-11-11 17:57:13
【问题描述】:

我正在尝试制作一个 wiki markdown 样式解析器,其中我有由主题标签定义的标题。例如:

# Heading 1

Some information here below the heading

Another paragraph of information

## Subheading 1

Paragraph related to the subheading

我要做的是捕获一个井号标签和另一个井号标签之间的所有内容(以及井号标签本身)

所以在上面,我想捕捉

 Heading 1 (and #)

 Some information here below the heading

 Another paragraph of information

还有……

 Subheading 1 (and ##)

 Paragraph related to the subheading

到目前为止,我有/(#+) ?(.+)/,它非常适用于哈希标记后同一行上的内容,但不适用于任何由换行符分隔的文本。

但是,我似乎无法匹配正则表达式模式的 (.+) 部分中的换行符,而不会吞噬所有以哈希标记开头的新行。

我相信这很简单。

【问题讨论】:

  • 您尝试使用哪种语言实现此功能
  • PHP,已编辑问题

标签: php regex


【解决方案1】:

您可以使用这个基于否定的正则表达式:

# *([^#]+)

RegEx Demo

代码:

if ( preg_match_all('/# *([^#]+)/', $input, $matches) )
   print_r($matches[1]);

【讨论】:

  • 是的。这做到了。非常感谢!
猜你喜欢
  • 2013-10-31
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
  • 2012-04-13
相关资源
最近更新 更多