下面是一個樣本字符串我必應搜索,這將是與其他字符串在單獨一行:刪除標點並更換空白
第1章:我的名字是:Shojib(又名MHS)
這裏是我的正則表達式來查找特定的行:(Chapter)()([0-9])(:)(.*)
現在我想保持的話和整數,並刪除標點符號,並用下劃線分隔各個單詞和整數。例如,這是格式應該如何更換後的樣子:
Chapter_1_My_name_is_Shojib_aka_mhs
下面是一個樣本字符串我必應搜索,這將是與其他字符串在單獨一行:刪除標點並更換空白
第1章:我的名字是:Shojib(又名MHS)
這裏是我的正則表達式來查找特定的行:(Chapter)()([0-9])(:)(.*)
現在我想保持的話和整數,並刪除標點符號,並用下劃線分隔各個單詞和整數。例如,這是格式應該如何更換後的樣子:
Chapter_1_My_name_is_Shojib_aka_mhs
因爲你沒有提到語言,所以這個答案是使用Perl符號。確切的替換語法取決於您使用的語言。
你需要用兩個正則表達式來完成。第一個刪除標點符號,第二個用下劃線替換空格。
s/[^\w\s]//g
表示匹配[^\w\s]
並用''替換它。 \w
單詞字符(包含不同的字符取決於你的正則表達式引擎至少0-9A-ZA-Z_如果你的語言支持Unicode它可以爲所有的字母都在\w
)
\s
空白字符
[]
在字符類內的第一位置的字符類
^
是否定
[^\w\s]
不在\ W的所有字符和\ S
這將取代任何不是一個單詞字符而不是空白的任何東西。
第二步是_
s/\s/_/g
你的正則表達式(Chapter)()([0-9])(:)(.*)
找到你行還可以提高,以取代剩餘的空白。如果使用方括號,則可以創建捕獲組,這意味着匹配的模式將存儲到變量中。因此搜索Chapter
並將其存儲到變量中是沒有意義的,該變量已知。如果你不需要這些變量您可以在正則表達式簡化爲:
Chapter\s*\d:.*
\d
比[0-9]
\s*
同樣的手段
你期望章節號比9大空白的任何量?然後使用
Chapter\s*\d+:.*
+
是指至少一個,所以\d+
將至少一個數字匹配。
不是Perl。常規文本編輯器的查找和替換正則表達式功能。即OpenOffice,TextWrangler,Eclipse,LibreOffice。 – user730009 2011-06-02 04:52:01
比嘗試使用查找字段中前兩個斜線之間的部分以及替換字段中斜槓2和3之間的部分。但它可能不適用於每個編輯器,取決於使用的正則表達式引擎。 – stema 2011-06-02 07:37:26
是否有任何替代程序沒有perl符號?如果沒有,我怎麼能把這兩個在Perl腳本?我正在討論將查找和替換部分放在perl腳本中。我將使用TextWrangler for mac。 – user730009 2011-06-05 03:32:14
要求並不十分清楚,但是這應該這樣做...
/[^A-Za-z0-9]/_/g
把你做的任何字符不是想用括號中的下劃線替換
不是Perl。常規文本編輯器的查找和替換正則表達式功能。 – user730009 2011-06-02 04:51:04
@ user730009,哪位編輯? – 2011-06-02 10:30:35
你在用什麼語言?我幾乎可以說使用一個查找和替換非字母字符'_'將是非常簡單的。 – wilbbe01 2011-05-31 04:15:11