我有以下正则表达式:\^(?:[0-9]|\-|\+)[\s\S]*?\n\n\gm
,仅应与markdown中的列表标记匹配。剩下两个问题,第一个是与匹配,---
第二个是与匹配++text between++
。
因此,我的想法是这样的:\^(?:[0-9]|\-{1}?|\+{1}?)[\s\S]*?\n\n\gm
在不存在+
和的重复情况下,只给出一个匹配项作为回报-
。
但是这种方式行不通。
检查regex101以获取详细信息:https ://regex101.com/r/Q3rA31/1
更具体地说:在markdown中,存在几种创建列表的可能性,每种情况我都想与正则表达式匹配。不幸的是,符号也喜欢++
并且---
确实匹配,这是我想避免的。
+ Create a list by starting a line with `+`, `-`, or `*`
+ Sub-lists are made by indenting 2 spaces:
- Marker character change forces new list start:
* Ac tristique libero volutpat at
+ Facilisis in pretium nisl aliquet
- Nulla volutpat aliquam velit
+ Very easy!
1. Lorem ipsum dolor sit amet
2. Consectetur adipiscing elit
3. Integer molestie lorem at massa
1. You can use sequential numbers...
1. ...or keep all the numbers as `1.`
57. foo
1. bar
这种模式应该可以解决问题:
^[0-9+-]+[ .][\s\S]*?\n{2}
https://regex101.com/r/Q3rA31/2
我简化了示例的第一部分,使用字符集而不是交替显示。但是,此后的最大区别在于,该模式用于[ .]
在列表字符后立即匹配点或空格,这似乎是markdown语法中的要求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句