[英]JS Regex: Wrap content in multiple tags defined in appended lines?
我正在嘗試使用JavaScript String replace替換內容,如下所示:
從:
line 1
line 2
! foo
! bar
! baz
至:
<baz>
<bar>
<foo>line 1</foo>
<foo>line 2</foo>
</bar>
</baz>
即,將第一個“!”標簽中的每一行換行,將其余標簽換行。 顯然應該適用於1+內容和“!”行。
有誰知道如何使用捕獲組一步完成此操作,還是需要更復雜的操作?
謝謝。
您可以匹配零件,進行拆分,然后將其構造為所需的形狀。
/^((?:(?!\r?\n!)[\S\s])+)\s*\r?\n![ \t]*(.+)\s*\r?\n![ \t]*((?:(?!\s*\r?\n!)[\S\s](?:\s*\r?\n![ \t]*)?)+)/
https://regex101.com/r/Ji5ys6/1
組1 =行,在\\s*\\r?\\n\\s*
上分割
組2 = foo
組3 = bar,baz,...分割為\\s*!\\s*
^
( # (1 start), line1, line 2, ...
(?:
(?! \r? \n ! )
[\S\s]
)+
) # (1 end)
\s* \r? \n ! [ \t]*
( .+ ) # (2), foo
\s* \r? \n ! [ \t]*
( # (3 start), bar, baz, ...
(?:
(?! \s* \r? \n ! )
[\S\s]
(?: \s* \r? \n ! [ \t]* )?
)+
) # (3 end)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.