我有一个现有的正则表达式(https://regexr.com/45gpv),该正则表达式选择由2个新行字符分隔的块:
/^((?:[^\n]|\n(?! *\n))+)(?:\n *)+\n/gm
,我想将其更改为可以使用 3个新行字符。我标记了所需的行为。 (单行和双行不应作为分隔符。)
lorem ipusm dolor ↵ ⎤
sit amet, consectetur. ↵ ⎦
↵
↵
adipiscing elit, ↵ ⎤
sed do eiusmod tempor ↵ ⎥
↵ ⎥
incididunt ut labore ↵ ⎥
et dolore ↵ ⎥
magna aliqua. ↵ ⎦
↵
↵
ut enim ad minim veniam, quis nostrud exercitation ullamco ⎤
laboris nisi ut aliquip ex ea commodo consequat. ⎦
有人可以帮我编辑正则表达式吗,我无法重塑。
我使用simple-markdown规则的正则表达式来实现markdown-> html解析器。
使用旧正则表达式的实际规则如下:
export const sectionRule = {
order: SimpleMarkdown.defaultRules.paragraph.order - 0.5,
match: blockRegex(/^((?:[^\n]|\n(?! *\n))+)(?:\n *)+\n/),
parse: parseCaptureInline,
react: (node, output, state) => <section>{output(node.content)}</section>,
};
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用
/^.+(?:\n{1,2}.+)*/gm
请参见regex demo
详细信息
^
-行的开头(由于m
修饰符).+
-除换行符以外的1个或更多字符(?:\n{1,2}.+)*
-零个或多个序列
\n{1,2}
-1或2个换行符.+
-除换行符以外的1个或更多字符。在某些正则表达式中,.
可以匹配除LF之外的任何字符,在某些情况下,它可以匹配除换行符以外的任何字符。要使模式“更安全”,只需将.
替换为[^\n]
:/^[^\n]+(?:\n{1,2}[^\n]+)*/gm
。
如果您必须将其调整为\r\n
或\n
或仅\r
结尾,请使用/^[^\r\n]+(?:(?:\r\n?|\n){1,2}[^\r\n]+)*/gm