我正试图从Markdown格式文档中删除第一段:
这是第一段。
这是第二段。
answer here为我提供了一个解决方案,该解决方案匹配以双换行符结尾的第一个字符串。
完美,除了一些文本以Markdown风格的标题开头:
###
这是一个h3标题。这是第一段。
所以我需要:
#
符号开头的任何行。 换句话说,在上面的两个例子中都返回'这是第一段'。
到目前为止,我尝试了很多变种:
"/(?s)(?:(?!\#))((?!(\r?\n){2}).)*+/
但我不能让它返回正确的比赛。
在我的环顾中,我哪里出错了?
我在PHP(preg_match())中这样做,如果这有所不同。
谢谢!
答案 0 :(得分:1)
你可以尝试
"/(?sm)^[^#](?:(?!(?:\r\n|\r|\n){2}).)*/"
我使用(?sm)
代替(?s)
启用了多行选项,并在新行开始每次检查,这可能不是以#开头。我使用了\r\n|\r|\n
而不是\r?\n
,因为我的测试环境有一些有趣的换行符=)