如何使用正则从含自定义题型的Markdown内容中提取普通段落行
普通段落文本行提取正则实现
核心匹配正则
开启全局匹配g、多行模式m修饰符的前提下,使用以下正则即可提取符合要求的普通段落:
/^\s*(?!\?|\[\]|\(\))(.+)$/gm
正则规则说明
^:多行模式下匹配每一行的行首位置\s*:兼容行首存在任意数量缩进、空格的写法,和示例中的格式对齐(?!\?|\[\]|\(\)):负向先行断言,直接排除三类非段落行:- 行首去空白后以
?开头的题型定义行 - 行首去空白后以
[]开头的复选框选项行 - 行首去空白后以
()开头的单选框选项行
- 行首去空白后以
(.+):捕获实际的段落文本内容,同时自动过滤没有有效内容的空行$:多行模式下匹配每一行的行尾位置
匹配效果验证
针对给出的示例文本,该正则会准确提取到3行普通段落:
this is paragraph line1this is paragraph line3this is paragraph line3
可选优化
如果你需要自动去除段落文本首尾的多余空格,可以使用调整后的版本:
/^\s*(?!\?|\[\]|\(\))(.+?)\s*$/gm
这个版本捕获到的段落内容不会携带首尾的冗余空白字符,可以直接使用。
- 该正则可以和已编写的radio、checkbox匹配规则无冲突配合,先提取所有输入类题型元素,再提取普通段落即可完成全内容解析。
内容的提问来源于stack exchange,提问作者Selva Ganapathi
相关产品推荐
相关产品推荐

