1. 程式人生 > >UltraEdit正則表達式介紹及實例

UltraEdit正則表達式介紹及實例

官網 文檔 ltr 能夠 本科 min 組合 表達 使用方法


前幾天,有個將Excel中的數據導入到數據庫中的需求。原本想到用程序讀取Excel中的數據並存儲到數據庫中,但經一哥們的提醒,說用 EditPlus或UltraEdit這種工具直接將數據拼湊成SQL插入語句更easy方便,也不用寫不論什麽代碼。因為我本人使用UltraEdit,故考 慮用UltraEdit的正則表達式來做這件事,以下是這種一個過程。

如果導入的表字段為:name,email。 introduce。在Excel中的數據相應的也是這種字段。值得註意的是:在excel中的數據,比方introduce不能換行。不然的話語句拼湊後會運行會出錯。

要拼湊的樣例數據例如以下(從Excel中拷貝並粘貼到UltraEdit中):

張三                            [email protected]              "坐於2004年5月經教育部批準升格為普通本科院校。  "  李四                   [email protected]                           最專業的圖文視頻體育賽事直播、報道和‘專家‘點評。

各字段值之間以一個或多個tab鍵分隔著,操作步驟:

替換按Ctrl+R

1、 先將單引號、雙引號之類的字符去掉,這一步不用正則,簡單替換就可以。

2、 去掉空行:用正則%[ ^t]++^p替換為空字符串,另外,還有^p$也能夠,只是在替換的時候,^p$每次僅僅能替換一個空行。

3、 在每行的最前面添加:insert into test(name,email,introduce)values(‘,在UltraEdit正則中,%是表示行首,例如以下圖:

技術分享

4、 替換掉tab鍵

技術分享

5、 最後在行尾增加’);

技術分享

OK,大功告成。這樣就拼湊成了正常的SQL插入語句了。感覺是不是非常快非常easy?

怎樣學習UltraEdit正則使用方法?能夠通過下面兩個方面:

1、 從網上搜些這方面的介紹資料

2、 通過UltraEdit的幫助文檔來進行學習

UltraEdit的幫助文檔有雙方面,一方面是其chm格式的文檔、還有一方面是其官網的文檔。

官網的文檔進入方式為:菜單幫助->高速入門指南,在打開的窗體中,點擊任一鏈接都會到其官網幫助文檔頁面,當然了,假設你到這裏了,也能夠直接點擊以下的鏈接:

http://www.ultraedit.com/support/tutorials_power_tips/ultraedit.html

chm格式的文檔進入方式為:

菜單幫助->使用幫助,或幫助->索引均可,例如以下圖:

技術分享

在左側輸入“正則表達式”進行查找,就會彈出右側的窗體,看到有非常多的使用介紹吧?你能夠選擇感興趣的進去。

以下是從UltraEdit文檔中摘錄的語法說明

正則表達式 (UltraEdit 語法):

符號 功能
% 匹配行首 – 表示搜索字符串必須在行首,但不包含不論什麽選定的結果字符中的行終止字符。
$ 匹配行尾 – 表示搜索字符串必須在行尾。但不包含不論什麽選定的結果字符中的行終止字符。

? 匹配不論什麽除換行符的字符。

* 匹配不論什麽除換行符外所出現的隨意數量的字符。

+ 匹配一個或多個前面的字符/表達式。

必須找到至少一個出現的字符。不匹配反復的換行符。

++ 0 次或多次匹配前面的字符/表達式。不匹配反復的換行符。
^b 匹配一個分頁符。
^p 匹配一個換行符 (CR/LF) (段落) (DOS 文件)
^r 匹配一個換行符 (僅 CR) (段落) (MAC 文件)
^n 匹配一個換行符 (僅 LF) (段落) (UNIX 文件)
^t 匹配一個制表符
[ ] 匹配不論什麽括號裏的單個字符或範圍
^{A^}^{B^} 匹配表達式 A 或 B
^ 忽略其後的正則表達式字符
^(*^) 在表達式加上括號或標簽在替換命令中使用。正則表達式中能夠有 9 個表達式標簽,數字依據它們在正則表達式中的次序確定數字。

對應的替換表達式是 ^x,x 的範圍是 1-9。比如: 假設 ^(h*o^) ^(f*s^) 匹配“hello folks”。那麽^2 ^1 表示將用“folks hello”替換它。

註意 – ^ 這裏涉及的字符“^”不是控制鍵 + 值。

比如:

m?n 匹配“man”、“men”、“min”,但不匹配“moon”。

t*t 匹配“test”、“tonight”和“tea time”中的“tea t”部分。但不匹配“tea

time” (“tea ”和“time”之間有換行)。

Te+st 匹配“test”、“teest”、“teeeest”等。但不匹配“tst”。

[aeiou] 匹配每一個元音小寫字母

[,.?] 匹配文字“,”、“.”或“?”。

[0-9a-z] 匹配不論什麽數字或小寫字母

[~0-9] 匹配除數字外的不論什麽字符 (~ 表示不匹配其後的內容)

你能夠搜索象以下一樣的表達式 A 或 B:

“^{John^}^{Tom^}

這將搜索 John 或 Tom。在兩個表達式之間應該沒有不論什麽其他內容。

你能夠在同一次搜索象以下一樣組合 A 或 B 和 C 或 D:

“^{John^}^{Tom^} ^{Smith^}^{Jones^}”

這將搜索後面尾隨了 Smith 或 Jones 的 John 或 Tom。

以下的表顯示“Unix”樣式的正則表達式語法。

正則表達式 (Unix 語法):

符號 功能
\ 表示下一個字符有特殊含義。“n”表示匹配字符“n”,“\n”匹配一換行符。看以下的樣例 (\d、\f、\n 等)。
^ 匹配/停駐行首。
$ 匹配/停駐行尾。
* 匹配前面的字符 0 次或多次。
+ 匹配前面的字符一次或多次。不匹配反復的換行符。
. 匹配不論什麽除換行符之外的單個字符。不匹配反復的換行符。

(表達式) 在表達式加上括號或標簽在替換命令中使用。

正則表達式中能夠有 9 個表達式標簽,數字依據它們在正則表達式中的次序確定數字。

對應的替換表達式是 ^x,x 的範圍是 1-9。比如: 假設 ^(h*o^) ^(f*s^) 匹配“hello folks”。那麽^2 ^1 表示將用“folks hello”替換它。

[xyz] 字符集,匹配不論什麽括號間的字符。.
[^xyz] 排除字符集。

匹配不論什麽不在括號間的字符。

\d 匹配一個數字字符。等同於 [0-9]。
\D 匹配一個非數字字符,等同於 [^0-9]。
\f 匹配一個換頁符。
\n 匹配一個換行符。

\r 匹配一個回車符。

\s 匹配不論什麽包括空格、制表符等不會顯示的字符,但不匹配換行符。
\S 匹配不論什麽非空白區域 (顯示字符) 的字符,但不匹配換行符。
\t 匹配一個制表符。
\v 匹配一個垂直制表符。
\w 匹配不論什麽包括下劃線的詞語。
\W 匹配不論什麽非詞語的字符。

\p 匹配 CR/LF (等同於 \r\n),用來匹配 DOS 行終止符。

註意 – ^ 這裏所涉及的字符“^”不是控制鍵 + 值。

比如:

m.n 匹配“man”、“men”、“min”,但不匹配“moon”。

Te+st 匹配“test”、“teest”、“teeeest”等。但不匹配“tst”。

Te*st 匹配“test”、“teest”、“teeeest”等,還有“tst”。

[aeiou] 匹配每一個元音小寫字母

[,.?] 匹配文字“,”、“.”或“?”。

[0-9a-z] 匹配不論什麽數字或小寫字母

[^0-9] 匹配除數字外的不論什麽字符 (~ 表示不匹配其後的內容)

你能夠象以下一樣的表達式 A 或 B 進行搜索:

“(John|Tom)”

這將搜索 John 或 Tom。在兩個表達式之間應該沒有不論什麽其他內容。

你能夠在同一次搜索象以下一樣組合 A 或 B 和 C 或 D:

“(John|Tom) (Smith|Jones)”

這將搜索 Smith 或 Jones 以及尾隨在後面的 John 或 Tom。

假設在查找/替換中沒有選擇使用正則表達式,在替換對象中下列特殊字符相同有效:

符號 功能
^^ 匹配字符“^”
^s 表示活動文件窗體中選定 (加亮) 的文字。
^c 表示剪貼表的內容。

^b 匹配一個分頁符。

^p 匹配一個換行符 (CR/LF) (段落) (DOS 文件)
^r 匹配一個換行符 (僅 CR) (段落) (MAC 文件)
^n 匹配一個換行符 (僅 LF) (段落) (UNIX 文件)
^t 匹配一個制表符

註意 – ^ 這裏所涉及的字符“^”不是控制鍵 + 值。

UltraEdit正則表達式介紹及實例