You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift正则匹配问题:如何排除##以识别单个#开头的Markdown标题

解决方法

你可以通过两种方式修正这个问题:

方法一:用字符串原生方法(更直观高效)

直接通过hasPrefix判断,先检查是否以单个#开头,同时排除以##开头的情况:

let strings = ["# Fancy Title", "## Fancy Subtitle", "Body Content"]
for string in strings {
    if string.hasPrefix("#") && !string.hasPrefix("##") {
        // 解析一级标题
        print("一级标题:\(string)")
    } else if string.hasPrefix("##") {
        // 解析二级标题
        print("二级标题:\(string)")
    } else {
        // 解析正文
        print("正文:\(string)")
    }
}

方法二:修正正则表达式

原来的正则/^#(^#)/逻辑错误,应该用负向先行断言确保#后面不是另一个#,正则写成/^#(?!#)/:

let strings = ["# Fancy Title", "## Fancy Subtitle", "Body Content"]
for string in strings {
    if string.contains(/^#(?!#)/) {
        // 解析一级标题
        print("一级标题:\(string)")
    } else if string.contains(/^##/) {
        // 解析二级标题
        print("二级标题:\(string)")
    } else {
        // 解析正文
        print("正文:\(string)")
    }
}

两种方法都能准确区分一级标题、二级标题和正文,其中方法一不用正则,代码可读性更高,推荐使用。

内容的提问来源于stack exchange,提问作者appfrosch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:28:21