我希望在重要部分中获取所有非重要名称的所有名称。
我的文字:
*** not important
name 1
details
name 2
details
*** important
name 3
details
name 4
details
我想要的是什么:
name 3
name 4
到目前为止我所拥有的:
这匹配所有名称
(^[^ ].*$)
但是当我试图只获得重要的那个时它会失败
\*\*\* important[\s\S]*(^[^ ].*$)
或者
\*\*\* important[\s\S]*?(^[^ ].*$)
这里的例子: https://regex101.com/r/SdG28O/2
提前感谢您的帮助。
答案 0 :(得分:1)
q t q' t' d
-----------------------
q0 a q1 # right // erase two a's from
q1 a q2 # right // the front of the tape
q2 a q2 a right // scan to the end
q2 b q2 b right // of the tape
q2 # q3 # left
q3 b q4 # left // erase two b's from
q4 b q5 # left // the end of the tape
q5 a q5 a left // scan to the beginning
q5 b q5 b left // of the tape
q5 # q6 # right
q6 a q1 a right // try to start erasing a's
q6 # hA # - // or halt if all input is erased
可替换地:
(?:^\*{3} important$|\G(?!\A))[\s\S]*?\K^[^ ].*
(?:^\*{3} important$|\G(?!\A))[\s\S]*?\K^\S.*
*** not important
name 1
details
name 2
details
*** important
name 3
details
name 4
details
name 3
name 4
匹配以下任一项
(?:^\*{3} important$|\G(?!\A))
符合以下条件
^\*{3} important$
在行首处断言位置^
完全匹配\*{3}
3次*
匹配文字空格字符
按字面意思匹配important
断言行尾的位置$
在上一场比赛结束时断言位置\G(?!\A)
任意次数匹配任何字符,但尽可能少[\s\S]*?
重置比赛的起点。最终匹配中不再包含任何以前消费的字符\K
在行首处断言位置^
匹配任何非空格字符:You can replace this with \S
instead (for any non-whitespace character) if you prefer [^ ]
多次匹配任何字符