我试图将JavaScript转换为插入"分隔线"双/三线断裂之间。
的JavaScript
html = html.replace(/\:\s*\n\s*/g, ":\n" ); //sentences ending with : is not the end of a paragraph, but the start of something new
html = html.replace(/\n\s*\n\s*\n/g, replaceChar );
html = html.replace(/\n\s*\n\s*/g, replaceChar );
我想将它拆分成一个数组,而不是插入一个分隔线(replaceChar
)。
我已经尝试了这一点但无法管理我做错的事情。
的PowerShell
$html = $html -replace "/\:\s*\n\s*/g", ":\n"
$html = $html -split "/\n\s*\n\s*\n/g" -split "/\n\s*\n\s*/g"
例如:
$html = "Ipusm lorem – Outsourcing
ipsum lorem lorem ipsum. ipsum. lorem:
test testads fsadf dsa fsa
asdf dsa fdsa fdsa fsa .a fdsa dsa f."
是
$html[0] = "Ipusm lorem – Outsourcing"
$html[1] = "ipsum lorem lorem ipsum. ipsum. lorem:
test testads fsadf dsa fsa"
$html[2] = "asdf dsa fdsa fdsa fsa .a fdsa dsa f."
答案 0 :(得分:2)
如果在不需要冒号之后保留换行符,我会将冒号后的连续空格分解为单个空格,将结果拆分为换行符,然后删除空行:
$html -replace ':\s*', ': ' -split '\n' | Where-Object { $_.Trim() }
如果你想修剪其余的线条,请修改上面的内容:
$html -replace ':\s*', ': ' -split '\n' | ForEach-Object { $_.Trim() } |
Where-Object { $_ }
根据输入和您的要求,您可以在冒号之后重新添加换行符:
$html -replace ':\s*', ': ' -split '\n' |
ForEach-Object { $_.Trim() -replace ':', ":`n" } |
Where-Object { $_ }
另一种选择是在冒号后将换行符和后续空格分解为单个换行符,然后将该字符串拆分为2个以上的换行符:
$html -replace ':\n\s*', ":`n" -split '\n{2,}' |
ForEach-Object { $_.Trim() } |
Where-Object { $_ }
答案 1 :(得分:1)
您可以使用以下解决方案:
$html = "Ipusm lorem – Outsourcing`r`n`r`n`r`nipsum lorem lorem ipsum. ipsum. lorem:`r`n`r`ntest testads fsadf dsa fsa`r`n`r`n`r`n `r`n asdf dsa fdsa fdsa fsa .a fdsa dsa f."
$chunks = $html -split "\r?\n(?:\p{Zs}*\r?\n){2,}\p{Zs}*"
以下是regex demo
正则表达式匹配:
\r?\n
- linbreak(可选CR后跟LF)(?:\p{Zs}*\r?\n){2,}
- 两个或更多序列:
\p{Zs}*
- 零个或多个水平空白符号\r?\n
- 可选CR跟随LF \p{Zs}*
- 零个或多个水平空白符号见输出: