coolcd
| 1
奇怪的 Openoffice Regular Expression |
0
1 | 2009-02-14 | quote | | |
Openoffice Writer 的 Search/Replace 支援 Regular Expression,但有許多奇異的行為:
- \n 在搜尋欄代表 Shift+Enter 所輸入的手動換行符號,在取代欄卻代表 Enter 所輸入的換段符號
- \xXXXX 在搜尋欄代表 unicode 中 U+XXXX 的字元,但在取代欄卻會被當成 "\xXXXX" 這樣的字串
- back reference,在搜尋欄是 \1 \2 ...,但在取代欄要用 $1 $2 ...
- 除非你有勾「精確搜尋」,否則大小寫沒有差別,所以,預設 [a-z] 會 match [a-zA-Z]
- [:class:] 的寫法與一般的正規表達式不太一樣,一般要用 [[:class:]+],但這在 Ooo 中無法正常作用
- [:print:] 不會 match ‘ ’ “ ” « »
- [:space:] 只代表 space,不代表 tab
更多資訊可參考
OpenOffice.org 類型表式 (regular expression)
Documentation/How Tos/Regular Expressions in Writer
|
寫 regular expression 真是痛苦。剛才又寫了一個 regular expression 把文章結尾的空白刪除。
edited: 1
|
coolcd | Openoffice Writer 的 Search/Replace 支援 Regular Expression,但有許多奇異的行為:
- \n 在搜尋欄代表 Shift+Enter 所輸入的手動換行符號,在取代欄卻代表 Enter 所輸入的換段符號
|
呃,這是哪一國的 re 呀?兩種不同的 re 並存會很不好用,就像用慣了 perl re,再來用 vim/sed re 就常常會搞錯。
|
php 也有兩種 regular expression POSIX or PERL,PERL regular expression 比較多人用,功能也比較強。
edited: 1
|
eliu | php 也有兩種 regular expression POSIX or PERL,PERL regular expression 比較多人用,功能也比較強。
|
這兩種比較容易區分。但問題是 ooo 在搜尋及取代有不同的 re rules,這樣就會常搞成一團亂了。
|
coolcd
| 6
奇怪的 Openoffice Regular Expression |
0
0 | 2009-02-14 | quote | | |
coolcd |
Openoffice Writer 的 Search/Replace 支援 Regular Expression,但有許多奇異的行為:
- \n 在搜尋欄代表 Shift+Enter 所輸入的手動換行符號,在取代欄卻代表 Enter 所輸入的換段符號
- \xXXXX 在搜尋欄代表 unicode 中 U+XXXX 的字元,但在取代欄卻會被當成 "\xXXXX" 這樣的字串
- back reference,在搜尋欄是 \1 \2 ...,但在取代欄要用 $1 $2 ...
- 除非你有勾「精確搜尋」,否則大小寫沒有差別,所以,預設 [a-z] 會 match [a-zA-Z]
- [:class:] 的寫法與一般的正規表達式不太一樣,一般要用 [[:class:]+],但這在 Ooo 中無法正常作用
- [:print:] 不會 match ‘ ’ “ ” « »
- [:space:] 只代表 space,不代表 tab
|
再補一條:
- $ 在搜尋欄代表段落符號,在取代欄代表 '$' 字元。
再分享一個經驗:
如果在搜尋欄輸入 $,在取代欄輸入 \n,按「全部取代」,結果會怎麼樣呢?首先,Openoffice 3.0 會問:「若要繼續此動作,必需關閉「還原」功能,你是否要關閉還原功能?」如果我乖乖地回答「是」,那我的 Openoffice 3.0 就會把 CPU 吃到 100%,如果回答「否」,就會出現「搜尋項目被六萬次取代。」
|
如果在搜尋欄輸入 $ 搜尋,只可以找到 Enter 輸入的段落符號,但如果用 .*$ 搜尋,卻會找到用 Enter 分段或用 Shift-Enter 斷行的文字段落。
看起來 Ooo 的 regular expression 實在蠻複雜的,使用前最好多測試。
|