我想使用PowerShell合併數百個.rtf文件。什麼REGEX模式會讓我成爲一個字符串的最後部分?
這裏的格式: 一堆CSS的東西,然後我想要的部分.....
{\rtf1\ansi {\fonttbl{\f0 Arial;}}{\colortbl\red255\green255\blue255;}{\stylesheet
}\paperw11685\paperh1560\margl600\margr600\margt600\margb600\pard\plain\f0\fs28\cf0
\ql\li75\ri75\fi0\b Instructions: }
在這種情況下,我希望保留 「說明:」
{\rtf1\ansi {\fonttbl{\f0 Arial;}}{\colortbl\red255\green255\blue255;}{\stylesheet
}\paperw10530\paperh1920\margl600\margr600\margt600\margb600\pard\plain\f0\fs28\cf0
\ql\li75\ri75\fi0\b You will be presented with fifty (50) questions which are ran
domly selected from a pool of hundreds of questions. }
在這種情況下,我希望保留「您將會看到五十(50)個問題,這些問題是從數百個問題池中選出來的,並且是從 中選出的。」
PowerShell腳本是這樣的:
$files = (dir *.rtf)
$outfile = "AllQuestions.rtf"
$files | %{
$_.Name | Add-Content $outfile
$MyVar = Get-Content $_.Name
$MyVar=$MyVar -replace ".*b\s","" | Add-Content $outfile
}
我的意圖是UP更換所有的字符爲 「\ B」 與虛無( 「」)。 我用/。 b \ S /(FWD斜面作爲定界符, = 「一切零次或多次」,B \ S =字母B和一個空格)。我部分成功;它的汽提部分
{\rtf1........cf0
\ql\li75\ri75\fi0\b Instructions: }
到
{\rtf1........cf0
Instructions: }
這讓我覺得在cf0之後有一個換行。我試圖去掉所有的換行符
-replace "\n*",""
沒有改變字符串。
但是我想轉儲所有以前的字符串(從{\ rtf1 ....到最終文本之前的右邊)&留下那個結束文本.....在這一點上,我將採取拖尾「}」轉儲它在隨後更換
我知道OP說他們會接受尾部的'}',但他們確實聲明他們並不是真的想要它。你可能想要設置一個捕獲組,然後在那裏設置一個非捕獲組。 '(?<= \\ b)(。*)(?:})$' – TheMadTechnician 2014-10-08 18:54:41
@TheMadTechnician,完美,謝謝,更新了答案。 – radar 2014-10-08 19:04:48
耶。工作。謝謝。你能解釋一下嗎?<=這部分?我認爲\\ b正在逃避反斜槓,字母b和空格。 ....最後,你錨定一個$從最後開始向後搜索? – jazaddict 2014-10-08 20:02:59