2016-02-16 91 views
1

我試圖將JavaScript轉換爲在雙/三換行符之間插入「分隔符行」的PowerShell。在雙/三行換行符上分割字符串

的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

你能顯示一些示例文本和你的查詢的預期結果只是爲了清楚嗎? – Matt

+1

PowerShell不針對Regex使用JavaScript語法。 – PetSerAl

+0

@PetSerAl我在哪裏使用JavaScript語法?思想 - 替換和 - 分裂了正則表達式輸入.. ?? – Plexus81

回答

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

您可以採用如下方案:

$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}* - 零個或更多個水平空白符號

見的輸出:

enter image description here

+0

你可以運行'function prompt {'PS>'}'來隱藏你的工作目錄。 – PetSerAl

+0

謝謝,讓我們生活和學習:) –