Php 我的正则表达式在哪里出错了?
我试图从降价格式的文档中提取第一段: 这是第一段 这是第二段 给了我一个匹配以双换行符结尾的第一个字符串的解决方案 完美,除了一些文本以标记样式标题开头外:Php 我的正则表达式在哪里出错了?,php,regex,markdown,Php,Regex,Markdown,我试图从降价格式的文档中提取第一段: 这是第一段 这是第二段 给了我一个匹配以双换行符结尾的第一个字符串的解决方案 完美,除了一些文本以标记样式标题开头外: ###这是一个h3标题 这是第一段 因此,我需要: 跳过以一个或多个#符号开头的任何行 匹配以双换行符结尾的第一个字符串 换言之,在上述两个示例中返回“这是第一段” 到目前为止,我在以下方面尝试了许多变化: "/(?s)(?:(?!\#))((?!(\r?\n){2}).)*+/ 但我不能让它返回正确的匹配 我在环顾四周时哪
###
这是一个h3标题
这是第一段
因此,我需要:
- 跳过以一个或多个
符号开头的任何行#
- 匹配以双换行符结尾的第一个字符串
"/(?s)(?:(?!\#))((?!(\r?\n){2}).)*+/
但我不能让它返回正确的匹配
我在环顾四周时哪里出错了
我正在用PHP(preg_match())做这件事,如果这有区别的话
谢谢 你可以试试
"/(?sm)^[^#](?:(?!(?:\r\n|\r|\n){2}).)*/"
我通过使用(?sm)
而不是(?s)
启用多行选项,并在新行开始检查,新行可能不以#开头。我使用了\r\n |\r |\n
而不是\r?\n
,因为我的测试环境有有趣的换行符=)你可以试试
"/(?sm)^[^#](?:(?!(?:\r\n|\r|\n){2}).)*/"
我通过使用(?sm)
而不是(?s)
启用多行选项,并在新行开始检查,新行可能不以#开头。我使用了\r\n |\r |\n
而不是\r?\n
,因为我的测试环境有有趣的换行符=)是的!非常感谢你!(现在开始了解更多有关(?sm)的信息)是的!非常感谢你!(现在开始了解有关(?sm)的更多信息。)