已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
昨天关门了。
Improve this question
我试图弄清楚如何在正则表达式中使用一系列特殊字符进行分组(e.g.“#",“##","###”),类似于markdown。对于一个级别,我想收集里面的所有内容,包括较低的级别。例如,如果我有一个级别“##",我想收集里面的所有文本,直到下一个“##",包括任何“###”或“####"等。
演示文本为:
## Test 1
This is some test text for block 1.
## Test 2
This is some test text for block 2.
### Test 2.1
This is some test text for block 2.1.
## Test 3
This is some test text for block 3.
如何编写正则表达式来处理这样的匹配?
这是我已经尝试过的:
/(?<=##\s)([\w\s\n#.]*)(?=##)/g
但这不起作用。它从第一个“##”到最后一个“##"匹配,包括其间相同级别的所有块。
2条答案
按热度按时间zc0qhyus1#
/(#{2,3}) ((.|\s)*?)(?=(#{2,3})|$)/g
明细:
(#{2,3])
=捕获##或###((.|\s)*?)
=无贪婪捕获任何字符或空格(?=(#{2,3})|$)
=向前查找##或###或字符串结尾下面是一个示例代码片段,它仅使用replace突出显示2个捕获组。
第一个
nfg76nw02#
以下是最终奏效的方法。
这将捕获每个##级别及其下的任何级别(例如###)。