<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

    #

    perl中的undef,false和0是屬于假的一方;其他的屬于真.
    posted @ 2006-04-04 15:58 ivaneeo 閱讀(352) | 評(píng)論 (0)編輯 收藏

    安裝mule-gbk后可以顯示更多的漢字,比如朱镕基的“镕”,如果不用mule-gbk是無法正確顯示的
    1. http://mule-gbk.sourceforge.net/ 下載mule-gbk,然后解壓到任意目錄,不過不要解壓到 $HOME 目錄下面,這里解壓縮到 D:\mule-gbk-0.1.2004080701 ,然后仿照auctex的安裝方法即可,用cygwin安裝的步驟如下:
      $cd d: (或者$cd /cygdrive/d)
      $cd mule-gbk-0.1.2004080701
      $./configure
      $make
      $make lispdir=d:/emacs-21.3.50.1/site-lisp install

      最后一條命令中, lispdir 指定的是el文件安裝的目錄
    2. 現(xiàn)在在 .emacs 中加入
    ??? (set-terminal-coding-system 'chinese-iso-8bit)
    ??? (set-keyboard-coding-system 'chinese-iso-8bit)
    ??? (set-language-environment 'Chinese-GB)
    ??? (setq locale-coding-system 'chinese-iso-8bit)
    ??? (setq current-language-environment "Chinese-GB")


    ??? (if (not (member '("-*-tahoma-normal-r-*-*-16-*-*-*-c-*-fontset-chinese"
    ??? ??? . "fontset-gbk") fontset-alias-alist))
    ??? (progn
    ??? ??? (create-fontset-from-fontset-spec
    ??? ??? "-*-tahoma-normal-r-*-*-16-*-*-*-c-*-fontset-gbk,
    ??? ??? ;ascii:-adobe-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,
    ??? ??? chinese-gb2312:-*-simsun-medium-r-normal-*-16-160-*-*-*-*-gb2312*-*,
    ??? ??? korean-ksc5601:-*-medium-r-normal-*-*-*-ksc5601*-*,
    ??? ??? chinese-cns11643-5:-*-simsun-medium-r-normal-*-16-160-*-*-*-*-gbk*-0,
    ??? ??? chinese-cns11643-6:-*-simsun-medium-r-normal-*-16-160-*-*-*-*-gbk*-0,
    ??? ??? chinese-cns11643-7:-*-simsun-medium-r-normal-*-16-160-*-*-*-*-gbk*-0,
    ??? ??? chinese-big5-1:-*-Ming(for ISO10646)-*-*-*-*-16-160-*-*-*-*-big5*-*,
    ??? ??? chinese-big5-2:-*-Ming(for ISO10646)-*-*-*-*-16-*-*-*-*-*-big5*-*" t)
    ??? ??? )
    ??? )
    posted @ 2006-03-24 16:11 ivaneeo 閱讀(1976) | 評(píng)論 (0)編輯 收藏

    1.在你的.emacs中添加:
    ??? (setq auto-mode-alist (append '(("\\.js$" . c-mode)) auto-mode-alist))
    ??? ??? (autoload 'javascript-mode "javascript-mode" "JavaScript mode" t)
    ?? (setq auto-mode-alist (append '(("\\.js$" . javascript-mode))
    ??? ? ??? auto-mode-alist))

    ; Indent c code four spaces

    (setq c-basic-offset 4)

    ; Associate c-mode with the .js extension

    (setq auto-mode-alist (append '(("\\.js$" . c-mode)) auto-mode-alist))

    2.在你的site-lisp目錄下加入javascript-mode.el文件:


    ;; javascript-mode.el --- major mode for editing javascript (.js) files
    ;;
    ;; Copyright (C) 1997 Peter Kruse

    ;; Author: Peter Kruse <pete@netzblick.de>
    ;; Keywords: languages
    ;; Time-stamp: <Sun Apr 12 20:02:25 1998 pete>

    ;; This file is *NOT* part of GNU Emacs.

    ;; This file is free software; you can redistribute it and/or modify
    ;; it under the terms of the GNU General Public License as published by
    ;; the Free Software Foundation; either version 2 of the License, or
    ;; (at your option) any later version.

    ;; javascript-mode.el is distributed in the hope that it will be useful,
    ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
    ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.? See the
    ;; GNU General Public License for more details.

    ;; You should have received a copy of the GNU General Public License
    ;; along with this file; if not, write to the Free Software
    ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

    ;;; Commentary:

    ;; Get the latest version from
    ;; <http://www.brigadoon.de/peter/javascript-mode.el>

    ;; Basically this is c-mode, for indentation, that's where the line
    ;; (load-library "c-mode") comes from. colorization is done via hilit19.el.
    ;; Actually did not do much programming myself, just wanted to have
    ;; colorization, indentation and some functions (hm that's what major modes
    ;; are about?) hey, this is my first try!

    ;;; HOW TO INSTALL:
    ;; Put the following forms in your .emacs to enable autoloading of JavaScript
    ;; mode, and auto-recognition of ".js" files.
    ;;
    ;;?? (autoload 'javascript-mode "javascript-mode" "JavaScript mode" t)
    ;;?? (setq auto-mode-alist (append '(("\\.js$" . javascript-mode))
    ;;??? ??? ??? ??? ?? auto-mode-alist))
    ;;
    ;;?? This mode requires another lisp file, tempo.el. This can be
    ;;???? retrieved from ftp://ftp.lysator.liu.se/pub/emacs/tempo.el
    ;;
    ;;?? You might want to get browse-url.el, for the online help.
    ;;?? Get it from
    ;;?? http://wombat.doc.ic.ac.uk/emacs/browse-url.el

    ;;; Change Log:
    ;;
    ;; Sun Apr 12 19:48:48 1998
    ;;
    ;;??? included a menu
    ;;
    ;; Mon Sep 22 20:03:12 MET DST 1997
    ;;
    ;;??? improvement of Syntax-table
    ;;
    ;; Sun Sep? 7 17:57:50 MET DST 1997
    ;;
    ;;??? new variable: javascript-interactive
    ;;
    ;; Mon Sep? 1 14:52:37 MET DST 1997
    ;;
    ;;??? javascript online help - all it does, is browse-url to
    ;;????? javascript-base-help-href
    ;;
    ;; Fri Aug 29 21:01:22 MET DST 1997 Peter Kruse
    ;;??? <peter.kruse@psychologie.uni-regensburg.de>
    ;;
    ;;??? 1st release


    ;;; TODO
    ;;?
    ;;? - online help should work like describe-\(function\|variable\),
    ;;? but get the info from the web. Netscape's documention is in progress,
    ;;? there is no final complete docu on JavaScript1.2, so perhaps we wait.
    ;;
    ;;? - should include an interface to signing scripts, but zigbert is not
    ;;? available for linux

    ;;; Bugs
    ;;
    ;;? - strings in single-quotes do not highlight

    ;;; Code:

    ;; user-variables

    (defvar javascript-indentation 4
    ? "The width for further indentation in JavaScript mode.")

    (defvar javascript-base-help-href "http://developer.netscape.com/library/documentation/communicator/jsguide/"
    ? "URL where the javascript guide can be found.")

    (defvar javascript-browse-url-function 'browse-url-w3
    ? "how to view online help.")

    (defvar javascript-interactive t
    ? "If t user will be prompted for strings in templates.")

    ;;;

    (defvar javascript-mode-map (make-sparse-keymap)
    ? "Keymap for javascript-mode")

    (defvar javascript-mode-syntax-table nil
    ? "Syntax table for javascript-mode.")

    (defvar javascript-mode-hook nil
    ? "*Hook run when javascript-mode is started.")

    (if javascript-mode-syntax-table
    ??? ()
    ? (setq javascript-mode-syntax-table (make-syntax-table text-mode-syntax-table))
    ? (modify-syntax-entry ?_ "w" javascript-mode-syntax-table)
    ? (modify-syntax-entry ?' "\"" javascript-mode-syntax-table)
    ? (modify-syntax-entry ?% "_" javascript-mode-syntax-table)
    ? (modify-syntax-entry ?\" "\"" javascript-mode-syntax-table)
    ? (modify-syntax-entry ?\\ "\\" javascript-mode-syntax-table)
    ? (modify-syntax-entry ?. "_" javascript-mode-syntax-table))

    ?
    (defvar javascript-mode-abbrev-table nil
    ? "Abbrev table used while in javascript-mode.")
    (define-abbrev-table 'javascript-mode-abbrev-table ())

    (require 'tempo)

    (tempo-define-template
    ?"javascript-for"
    ?(list "for (" '(p "initial: ") "; " '(p "condition: ") "; " '(p "increment: ") ") {" 'n> 'p 'n "}" '>)
    ?nil "insert a for loop" nil)

    (tempo-define-template
    ?"javascript-for-in"
    ?(list "for (" '(p "variable: ") " in " '(p "object: ") ") {" '> 'n> 'p 'n "}" '>)
    ?nil "insert a for loop" nil)

    (tempo-define-template
    ?"javascript-if"
    ?(list "if (" '(p "condition: ") ") {" 'n> 'p 'n "}" '>)
    ?nil "insert an if statement" nil)

    (tempo-define-template
    ?"javascript-while"
    ?(list "while (" '(p "condition: ") ") {" 'n> 'p 'n "}" '>)
    ?nil "insert a while statement" nil)

    (tempo-define-template
    ?"javascript-do"
    ?(list "do {" '> 'n> 'p 'n "} while(" '(p "condition: ") ");" '>)
    ?nil "insert a do-while statement" nil)

    (tempo-define-template
    ?"javascript-with"
    ?(list "with (" '(p "with what? ") ") {" 'n> 'p 'n "}" '>)
    ?nil "insert a with statement" nil)

    (tempo-define-template
    ?"javascript-defun"
    ?(list "function " '(p "function name: ") "(" '(p "arguments: ") ") {" 'n> 'p 'n "}" '>)
    ?nil "insert a function definition" nil)

    (tempo-define-template
    ?"javascript-switch"
    ?(list "switch (" '(p "variable: ") ") {" '> 'n> "case '" 'p "' :" '> 'n> "break;" '> 'n> "default :" '> 'n> "}" '>)
    ?nil "insert a switch statement" nil)

    (tempo-define-template
    ?"javascript-case"
    ?(list "case '" 'p "' :" '> 'n> "break;" '>)
    ?nil "insert a case" nil)

    ;;; now for the help facility
    ;;; from man.el

    (defun javascript-help (entry)
    ? "Opens a browser via browse-url with a help entry on the current word."
    ? (interactive
    ?? (list (let* ((default-entry (current-word))
    ??? ??? (input (read-string
    ??? ??? ??? (format "Help entry%s: "
    ??? ??? ??? ??? (if (string= default-entry "")
    ??? ??? ??? ??? ??? ""
    ??? ??? ??? ??? ? (format " (default %s)" default-entry))))))
    ??? ?? (if (string= input "")
    ??? ?????? (if (string= default-entry "")
    ??? ??? ?? (error "No entry given")
    ??? ??? ?default-entry)
    ??? ???? input))))
    ? (let ((url (concat javascript-base-help-href "contents.htm" "#" entry))
    ??? (browse-url-browser-function javascript-browse-url-function))
    ??? (if (boundp 'browse-url-browser-function)
    ??? (progn
    ??? ? (pop-to-buffer " javascript-help")
    ??? ? (apply browse-url-browser-function (list url)))
    ????? (error "browse-url not found"))))
    ?????
    (modify-frame-parameters (selected-frame) '((menu-bar-lines . 2)))
    (define-key javascript-mode-map [menu-bar javascript]
    ? (cons "JavaScript" javascript-mode-map))
    (define-key javascript-mode-map [menu-bar javascript Help]
    ? '("Help" . javascript-help))
    (define-key javascript-mode-map [menu-bar javascript for]
    ? '("for" . tempo-template-javascript-for))
    (define-key javascript-mode-map [menu-bar javascript forin]
    ? '("for .. in" . tempo-template-javascript-for-in))
    (define-key javascript-mode-map [menu-bar javascript if]
    ? '("if" . tempo-template-javascript-if))
    (define-key javascript-mode-map [menu-bar javascript while]
    ? '("while" . tempo-template-javascript-while))
    (define-key javascript-mode-map [menu-bar javascript with]
    ? '("with" . tempo-template-javascript-with))
    (define-key javascript-mode-map [menu-bar javascript switch]
    ? '("switch" . tempo-template-javascript-switch))
    (define-key javascript-mode-map [menu-bar javascript case]
    ? '("case" . tempo-template-javascript-case))
    (define-key javascript-mode-map [menu-bar javascript do]
    ? '("do" . tempo-template-javascript-do))
    (define-key javascript-mode-map [menu-bar javascript function]
    ? '("function" . tempo-template-javascript-defun))


    (define-key javascript-mode-map "\C-c\C-h" 'javascript-help)
    (define-key javascript-mode-map "\C-c\C-f" 'tempo-template-javascript-for)
    (define-key javascript-mode-map "\C-c\C-n" 'tempo-template-javascript-for-in)
    (define-key javascript-mode-map "\C-c\C-i" 'tempo-template-javascript-if)
    (define-key javascript-mode-map "\C-c\C-w" 'tempo-template-javascript-while)
    (define-key javascript-mode-map "\C-c\C-t" 'tempo-template-javascript-with)
    (define-key javascript-mode-map "\C-c\C-s" 'tempo-template-javascript-switch)
    (define-key javascript-mode-map "\C-c\C-c" 'tempo-template-javascript-case)
    (define-key javascript-mode-map "\C-c\C-d" 'tempo-template-javascript-do)
    (define-key javascript-mode-map "\C-c(" 'tempo-template-javascript-defun)
    (define-key javascript-mode-map "{" 'electric-c-brace)
    (define-key javascript-mode-map "}" 'electric-c-brace)

    (defun javascript-mode ()
    ? "Major mode for editing javascript code. Basically this is c-mode,
    because it does a nice indentation. c-mode gets called via `load-library'.
    Colorization is done with hilit19. A few commands are defined through
    `tempo.el'. The online help facility gets done through browse-url.el.
    \\{javascript-mode-map}
    You can set the indentation level by setting the variable
    `javascript-indentation' to an integer-value. Default is 4.
    The variable javascript-base-help-href sets the URL for the JavaScript guide."
    ? (interactive)
    ? (kill-all-local-variables)
    ? (load-library "c-mode")
    ? (require 'browse-url)
    ? (use-local-map javascript-mode-map)
    ? (setq major-mode 'javascript-mode)
    ? (setq mode-name "JavaScript")

    ? (set-syntax-table javascript-mode-syntax-table)

    ? (make-local-variable 'comment-start)
    ? (setq comment-start "http:// ")
    ? (make-local-variable 'comment-start-skip)
    ? (setq comment-start-skip "/\\*+ *\\|// *")
    ? (make-local-variable 'tempo-interactive)
    ? (setq tempo-interactive javascript-interactive)
    ? (make-local-variable 'indent-line-function)
    ? (setq indent-line-function 'c-indent-line)
    ? (make-local-variable 'c-indent-level)
    ? (setq c-indent-level javascript-indentation)

    ? (run-hooks 'javascript-mode-hook))

    ;;;

    (if (featurep 'hilit19)
    ??? (hilit-set-mode-patterns
    ???? 'javascript-mode
    ???? '(("/\\*" "\\*/" comment)
    ?????? ("http://" "$" comment)
    ?????? ("\\<function\\>\\s +[^0-9]\\w+\\s *([^)]*)" nil defun)
    ?????? ("\\<\\(abstract\\|boolean\\|break\\|byte\\|case\\|catch\\|char\\|class\\|const\\|continue\\|default\\|delete\\|do\\|double\\|else\\|extends\\|false\\|final\\|finally\\|float\\|for\\|goto\\|if\\|implements\\|in\\|instanceof\\|int\\|interface\\|long\\|native\\|new\\|null\\|package\\|private\\|protected\\|public\\|return\\|short\\|static\\|super\\|switch\\|synchronized\\|this\\|throw\\|throws\\|transient\\|true\\|try\\|typeof\\|var\\|void\\|while\\)\\>" 1 keyword)
    ?????? ("\\<with\\>\\s *([^)]*)" nil include)
    ?????? ("\\<\\(import\\|export\\)\\>\\s +.*" nil include)
    ?????? ("\"[^\\\"]*\\(\\\\.[^\\\"]*\\)*\"" nil string)
    ?????? ("^\\s *\\w+\\s *:\\s *$" nil label))
    ???? nil nil)
    ? nil)


    (provide 'javascript-mode)

    ;; javascript-mode.el ends here

    ;; Local Variables:
    ;; local-write-file-hooks:(time-stamp)
    ;; End:

    posted @ 2006-03-24 14:59 ivaneeo 閱讀(1183) | 評(píng)論 (0)編輯 收藏

    默認(rèn)情況下, Emacs 已經(jīng)可支持 c/c++ 以及 Java 開發(fā)(其它的語(yǔ)言我沒試過,因?yàn)槲覚C(jī)器上只有上述幾種語(yǔ)言的編譯器),但如果你想用它來開發(fā) C# 還需要做一些其它的工作。 Emacs 就像一把槍,在需要時(shí)可以添入不同的子彈,我們現(xiàn)在需要的就是找一粒刻有 C# 字樣的子彈壓入槍膛。這粒子彈的名字叫 C# for Emacs mode ,是由微軟的一位工程師 Brad Merrill 利用業(yè)余時(shí)間開發(fā)的,可以在他的個(gè)人網(wǎng)站 http://www.cybercom.net/~zbrad/ 處下載,最新版本為 4.0

    ?

    下載之后需要對(duì)所獲得的 package 文件進(jìn)行一些簡(jiǎn)單的配置。因?yàn)槲掖饲耙矝]有接觸過 Lisp 語(yǔ)言,因此配置成了一大難題。經(jīng)過一番 google 搜索后,終于在 http://www.experts-exchange.com/Programming/Q_20815476.html 找到了答案。原來配置竟是非常簡(jiǎn)單:

    ?

    1.? 把下載文件夾中 cite-lisp 子目錄下的文件復(fù)制到 Emacs 安裝目錄 \cite-lisp\ 下。

    2.? 把下載文件中 zbrad.emacs 文件( .emacs Emacs 的配置文件)也復(fù)制到 Emacs 安裝目錄 \cite-lisp 子目錄下,然后改名為 site-start.el

    3.? 重新啟動(dòng) Emacs OK

    posted @ 2006-03-23 22:37 ivaneeo 閱讀(1224) | 評(píng)論 (0)編輯 收藏

    在svnpublic/conf/有兩個(gè)文件:
        svnserve.conf:
           [general]
           anon-access = read
           anon-access = none ##不讓guest訪問
           auth-access = write

           password-db = passwd ###你指定存放密碼的文件名
           realm = svnpublic
       
        passwd:
           [users]
           ivaneeo = XXX
    posted @ 2006-03-13 17:37 ivaneeo 閱讀(428) | 評(píng)論 (0)編輯 收藏

    第一步 :首先需要安裝Cygwin, subversion
        Admin/cygrunsrv 用于把cygwin服務(wù)加到windows服務(wù)中 Net/inetutils, inetd.
    第二步 :Cygwin環(huán)境下,運(yùn)行iu-config
    第三步 : 運(yùn)行 mkpasswd -l > /etc/passwd,將windows用戶導(dǎo)入到Cygwin中

    第四步 :運(yùn)行inetd服務(wù)。運(yùn)行以下命令:
        設(shè)置windows環(huán)境變量:CYGWIN=ntsec。將cygwin/bin加入到PATH中。
        在cygwin中運(yùn)行
        cygrunsrv -I inetd -d " CYGWIN inetd " -p /usr/sbin/inetd -a -d -e CYGWIN=ntsec
        cygrunsrv -S inetd
        就可以在windows服務(wù)管理器中看到CYGWIN inetd服務(wù)已經(jīng)啟動(dòng)了。
        運(yùn)行usr/sbin/inetd.exe --install-as-service
        從新啟動(dòng)。
    第五步:
         編輯修改/etc/services,加入:
           svn    3690/tcp    #Subversion
           svn    3690/udp    #Subversion
        編輯修改/etc/inetd.conf文件,加入:
           svn    stream    tcp    nowait    root    /usr/bin/svnserve   svnserve    -i -r /home/ivaneeo/svnpublic
    posted @ 2006-03-13 17:30 ivaneeo 閱讀(3688) | 評(píng)論 (0)編輯 收藏

    正則表達(dá)式學(xué)習(xí)筆記

      正則表達(dá)式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個(gè)串是否含有某種子串、將匹配的子串做替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。
      列目錄時(shí), dir *.txt或ls *.txt中的*.txt就是一個(gè)正則表達(dá)式,因?yàn)檫@里*與正則式的*的含義是不同的。

      為便于理解和記憶,先從一些概念入手,所有特殊字符或字符組合有一個(gè)總表在后面,最后一些例子供理解相應(yīng)的概念。

    正則表達(dá)式


      是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。
      可以通過在一對(duì)分隔符之間放入表達(dá)式模式的各種組件來構(gòu)造一個(gè)正則表達(dá)式,即/expression/

    普通字符


      由所有那些未顯式指定為元字符的打印和非打印字符組成。這包括所有的大寫和小寫字母字符,所有數(shù)字,所有標(biāo)點(diǎn)符號(hào)以及一些符號(hào)。

    非打印字符


    字符 含義
    \cx 匹配由x指明的控制字符。例如, \cM 匹配一個(gè) Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個(gè)原義的 'c' 字符。
    \f 匹配一個(gè)換頁(yè)符。等價(jià)于 \x0c 和 \cL。
    \n 匹配一個(gè)換行符。等價(jià)于 \x0a 和 \cJ。
    \r 匹配一個(gè)回車符。等價(jià)于 \x0d 和 \cM。
    \s 匹配任何空白字符,包括空格、制表符、換頁(yè)符等等。等價(jià)于 [ \f\n\r\t\v]。
    \S 匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]。
    \t 匹配一個(gè)制表符。等價(jià)于 \x09 和 \cI。
    \v 匹配一個(gè)垂直制表符。等價(jià)于 \x0b 和 \cK。

    特殊字符


      所謂特殊字符,就是一些有特殊含義的字符,如上面說的"*.txt"中的*,簡(jiǎn)單的說就是表示任何字符串的意思。如果要查找文件名中有*的文件,則需要對(duì)*進(jìn)行轉(zhuǎn)義,即在其前加一個(gè)\。ls \*.txt。正則表達(dá)式有以下特殊字符。
    特別字符說明
    $匹配輸入字符串的結(jié)尾位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,請(qǐng)使用 \$。
    ( )標(biāo)記一個(gè)子表達(dá)式的開始和結(jié)束位置。子表達(dá)式可以獲取供以后使用。要匹配這些字符,請(qǐng)使用 \( 和 \)。
    *匹配前面的子表達(dá)式零次或多次。要匹配 * 字符,請(qǐng)使用 \*。
    +匹配前面的子表達(dá)式一次或多次。要匹配 + 字符,請(qǐng)使用 \+。
    .匹配除換行符 \n之外的任何單字符。要匹配 .,請(qǐng)使用 \。
    [ 標(biāo)記一個(gè)中括號(hào)表達(dá)式的開始。要匹配 [,請(qǐng)使用 \[。
    ?匹配前面的子表達(dá)式零次或一次,或指明一個(gè)非貪婪限定符。要匹配 ? 字符,請(qǐng)使用 \?。
    \
    ^匹配輸入字符串的開始位置,除非在方括號(hào)表達(dá)式中使用,此時(shí)它表示不接受該字符集合。要匹配 ^ 字符本身,請(qǐng)使用 \^。
    {標(biāo)記限定符表達(dá)式的開始。要匹配 {,請(qǐng)使用 \{。
    |指明兩項(xiàng)之間的一個(gè)選擇。要匹配 |,請(qǐng)使用 \|。


      構(gòu)造正則表達(dá)式的方法和創(chuàng)建數(shù)學(xué)表達(dá)式的方法一樣。也就是用多種元字符與操作符將小的表達(dá)式結(jié)合在一起來創(chuàng)建更大的表達(dá)式。正則表達(dá)式的組件可以是單個(gè)的字符、字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。


    限定符


      限定符用來指定正則表達(dá)式的一個(gè)給定組件必須要出現(xiàn)多少次才能滿足匹配。有*或+或?或{n}或{n,}或{n,m}共6種。
    *、+和?限定符都是貪婪的,因?yàn)樗鼈儠?huì)盡可能多的匹配文字,只有在它們的后面加上一個(gè)?就可以實(shí)現(xiàn)非貪婪或最小匹配。
      正則表達(dá)式的限定符有:
    字符 描述
    * 匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價(jià)于{0,}。
    +
    ?
    {n} n 是一個(gè)非負(fù)整數(shù)。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個(gè) o。
    {n,} n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價(jià)于 'o+'。'o{0,}' 則等價(jià)于 'o*'。
    {n,m} m 和 n 均為非負(fù)整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o。'o{0,1}' 等價(jià)于 'o?'。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。

    定位符


      用來描述字符串或單詞的邊界,^和$分別指字符串的開始與結(jié)束,\b描述單詞的前或后邊界,\B表示非單詞邊界。不能對(duì)定位符使用限定符。

    選擇


      用圓括號(hào)將所有選擇項(xiàng)括起來,相鄰的選擇項(xiàng)之間用|分隔。但用圓括號(hào)會(huì)有一個(gè)副作用,是相關(guān)的匹配會(huì)被緩存,此時(shí)可用?:放在第一個(gè)選項(xiàng)前來消除這種副作用。
      其中?:是非捕獲元之一,還有兩個(gè)非捕獲元是?=和?!,這兩個(gè)還有更多的含義,前者為正向預(yù)查,在任何開始匹配圓括號(hào)內(nèi)的正則表達(dá)式模式的位置來匹配搜索字符串,后者為負(fù)向預(yù)查,在任何開始不匹配該正則表達(dá)式模式的位置來匹配搜索字符串。

    后向引用


      對(duì)一個(gè)正則表達(dá)式模式或部分模式兩邊添加圓括號(hào)將導(dǎo)致相關(guān)匹配存儲(chǔ)到一個(gè)臨時(shí)緩沖區(qū)中,所捕獲的每個(gè)子匹配都按照在正則表達(dá)式模式中從左至右所遇到的 內(nèi)容存儲(chǔ)。存儲(chǔ)子匹配的緩沖區(qū)編號(hào)從 1 開始,連續(xù)編號(hào)直至最大 99 個(gè)子表達(dá)式。每個(gè)緩沖區(qū)都可以使用 '\n' 訪問,其中 n 為一個(gè)標(biāo)識(shí)特定緩沖區(qū)的一位或兩位十進(jìn)制數(shù)。
      可以使用非捕獲元字符 '?:', '?=', or '?!' 來忽略對(duì)相關(guān)匹配的保存。

    各種操作符的運(yùn)算優(yōu)先級(jí)


      相同優(yōu)先級(jí)的從左到右進(jìn)行運(yùn)算,不同優(yōu)先級(jí)的運(yùn)算先高后低。各種操作符的優(yōu)先級(jí)從高到低如下:
    操作符 描述
    \ 轉(zhuǎn)義符
    (), (?:), (?=), [] 圓括號(hào)和方括號(hào)
    *, +, ?, {n}, {n,}, {n,m} 限定符
    ^, $, \anymetacharacter 位置和順序
    | “或”操作

    全部符號(hào)解釋


    字符 描述
    \ 將下一個(gè)字符標(biāo)記為一個(gè)特殊字符、或一個(gè)原義字符、或一個(gè) 向后引用、或一個(gè)八進(jìn)制轉(zhuǎn)義符。例如,'n' 匹配字符 "n"。'\n' 匹配一個(gè)換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。
    ^ 匹配輸入字符串的開始位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之后的位置。
    $ 匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp 對(duì)象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。
    * 匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價(jià)于{0,}。
    +
    ?
    {n} n 是一個(gè)非負(fù)整數(shù)。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個(gè) o。
    {n,} n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價(jià)于 'o+'。'o{0,}' 則等價(jià)于 'o*'。
    {n,m} m 和 n 均為非負(fù)整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o。'o{0,1}' 等價(jià)于 'o?'。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。
    ? 當(dāng) 該字符緊跟在任何一個(gè)其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面時(shí),匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對(duì)于字符串 "oooo",'o+?' 將匹配單個(gè) "o",而 'o+' 將匹配所有 'o'。
    .
    (pattern) 匹配 pattern 并獲取這一匹配。所獲取的匹配可以從產(chǎn)生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括號(hào)字符,請(qǐng)使用 '\(' 或 '\)'。
    (?:pattern) 匹 配 pattern 但不獲取匹配結(jié)果,也就是說這是一個(gè)非獲取匹配,不進(jìn)行存儲(chǔ)供以后使用。這在使用 "或" 字符 (|) 來組合一個(gè)模式的各個(gè)部分是很有用。例如, 'industr(?:y|ies) 就是一個(gè)比 'industry|industries' 更簡(jiǎn)略的表達(dá)式。
    (?=pattern) 正 向預(yù)查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個(gè)非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預(yù)查不消耗字符,也就是說,在一個(gè)匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始。
    (?!pattern) 負(fù) 向預(yù)查,在任何不匹配 pattern 的字符串開始處匹配查找字符串。這是一個(gè)非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預(yù)查不消耗字符,也就是說,在一個(gè)匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始
    x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。
    [xyz]
    [^xyz]
    [a-z]
    [^a-z]
    \b
    \B
    \cx 匹配由 x 指明的控制字符。例如, \cM 匹配一個(gè) Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個(gè)原義的 'c' 字符。
    \d 匹配一個(gè)數(shù)字字符。等價(jià)于 [0-9]。
    \D 匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9]。
    \f 匹配一個(gè)換頁(yè)符。等價(jià)于 \x0c 和 \cL。
    \n 匹配一個(gè)換行符。等價(jià)于 \x0a 和 \cJ。
    \r 匹配一個(gè)回車符。等價(jià)于 \x0d 和 \cM。
    \s 匹配任何空白字符,包括空格、制表符、換頁(yè)符等等。等價(jià)于 [ \f\n\r\t\v]。
    \S 匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]。
    \t 匹配一個(gè)制表符。等價(jià)于 \x09 和 \cI。
    \v 匹配一個(gè)垂直制表符。等價(jià)于 \x0b 和 \cK。
    \w
    \W
    \xn 匹配 n,其中 n 為十六進(jìn)制轉(zhuǎn)義值。十六進(jìn)制轉(zhuǎn)義值必須為確定的兩個(gè)數(shù)字長(zhǎng)。例如,'\x41' 匹配 "A"。'\x041' 則等價(jià)于 '\x04' & "1"。正則表達(dá)式中可以使用 ASCII 編碼。.
    \num 匹配 num,其中 num 是一個(gè)正整數(shù)。對(duì)所獲取的匹配的引用。例如,'(.)\1' 匹配兩個(gè)連續(xù)的相同字符。
    \n 標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)向后引用。如果 \n 之前至少 n 個(gè)獲取的子表達(dá)式,則 n 為向后引用。否則,如果 n 為八進(jìn)制數(shù)字 (0-7),則 n 為一個(gè)八進(jìn)制轉(zhuǎn)義值。
    \nm 標(biāo) 識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)向后引用。如果 \nm 之前至少有 nm 個(gè)獲得子表達(dá)式,則 nm 為向后引用。如果 \nm 之前至少有 n 個(gè)獲取,則 n 為一個(gè)后跟文字 m 的向后引用。如果前面的條件都不滿足,若 n 和 m 均為八進(jìn)制數(shù)字 (0-7),則 \nm 將匹配八進(jìn)制轉(zhuǎn)義值 nm。
    \nml 如果 n 為八進(jìn)制數(shù)字 (0-3),且 m 和 l 均為八進(jìn)制數(shù)字 (0-7),則匹配八進(jìn)制轉(zhuǎn)義值 nml。
    \un 匹配 n,其中 n 是一個(gè)用四個(gè)十六進(jìn)制數(shù)字表示的 Unicode 字符。例如, \u00A9 匹配版權(quán)符號(hào) (?)。

    部分例子


    正則表達(dá)式說明
    /\b([a-z]+) \1\b/gi一個(gè)單詞連續(xù)出現(xiàn)的位置
    /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 將一個(gè)URL解析為協(xié)議、域、端口及相對(duì)路徑
    /^(?:Chapter|Section) [1-9][0-9]{0,1}$/定位章節(jié)的位置
    /[-a-z]/A至z共26個(gè)字母再加一個(gè)-號(hào)。
    /ter\b/可匹配chapter,而不能terminal
    /\Bapt/可匹配chapter,而不能aptitude
    /Windows(?=95 |98 |NT )/可匹配Windows95或Windows98或WindowsNT,當(dāng)找到一個(gè)匹配后,從Windows后面開始進(jìn)行下一次的檢索匹配。
    參考文獻(xiàn):
    正則表達(dá)式
    http://www.soulogic.com/code/doc/RegularExpressions/
    posted @ 2006-02-22 21:00 ivaneeo 閱讀(390) | 評(píng)論 (0)編輯 收藏

    一個(gè)真正的二進(jìn)制編輯器用兩種方式來顯示文本: 二進(jìn)制和十六進(jìn)制格式。你可以在 Vim
    里通過轉(zhuǎn)換程序 "xxd" 來達(dá)到這效果。該程序是隨 Vim 一起發(fā)布的。
    首先以二進(jìn)制方式編輯這個(gè)文件:

    vim -b datafile
    現(xiàn)在用 xxd 把這個(gè)文件轉(zhuǎn)換成十六進(jìn)制:

    :%!xxd
    文本看起來像這樣:

    0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI
    0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0
    0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59.

    現(xiàn)在你可以隨心所欲地閱讀和編輯這些文本了。 Vim 把這些信息當(dāng)作普通文本來對(duì)待。
    修改了十六進(jìn)制部分并不導(dǎo)致可打印字符部分的改變,反之亦然。
    最后, 用下面的命令把它轉(zhuǎn)換回來:

    :%!xxd -r
    只有十六進(jìn)制部分的修改才會(huì)被采用。右邊可打印文本部分的修改忽略不計(jì)。

    欲知更多詳情,參見 xxd 手冊(cè)。
    posted @ 2006-02-20 15:48 ivaneeo 閱讀(16744) | 評(píng)論 (3)編輯 收藏

    首先我先安裝rxvt(在shell中).

    然后修改cygwin/cygwin.bat文件:
    ??? @echo off
    ??? D:
    ??? chdir D:\share\bin\cygwin\bin
    ??? set EDITOR=vi
    ??? set VISUAL=vi
    ??? set CYGWIN=codepage:oem tty binmode title
    ??? rxvt -fn "Lucida Console-14" -e bash --login -i

    并配置rxvt控制臺(tái)的其他屬性,修改~/.Xdefaults文件:
    Rxvt*geometry: 100x40
    Rxvt*background: gray16
    Rxvt*foreground: #ffffbf
    !Rxvt*borderColor: Blue
    !Rxvt*scrollColor: Blue
    !Rxvt*troughColor: Gray
    Rxvt*scrollBar: True
    Rxvt*scrollBar_right: True
    !Rxvt*font: Lucida Console-14
    !Rxvt.boldFont: Lucida Console-14
    !Rxvt*font: -bitstream-bitstream vera sans mono-*-r-*-*-14-*-*-*-*-*-*-*
    !Rxvt*boldFont: -bitstream-bitstream vera sans mono-*-r-*-*-14-*-*-*-*-*-*-*
    Rxvt*font: -*-courier-medium-r-*-*-14-140-*-75-*-*-*-*
    Rxvt*boldFont: -*-courier-bold-r-*-*-14-140-*-75-*-*-*-*

    Rxvt*SaveLines: 2000
    Rxvt*loginShell: True
    ! VIM-like colors
    Rxvt*color0:??? #000000
    Rxvt*color1:??? #FFFFFF
    Rxvt*color2:??? #00A800
    Rxvt*color3:??? #FFFF00
    Rxvt*color4:??? #0000A8
    Rxvt*color5:??? #A800A8
    Rxvt*color6:??? #00A8A8
    Rxvt*color7:??? #D8D8D8
    Rxvt*color8:??? #000000
    Rxvt*color9:??? #FFFFFF
    Rxvt*color10:?? #00A800
    Rxvt*color11:?? #FFFF00
    Rxvt*color12:?? #0000A8
    Rxvt*color13:?? #A800A8
    Rxvt*color14:?? #00A8A8
    Rxvt*color15:?? #D8D8D8
    ! eof






    emacs.font:? 8x16

    emacs.paneFont:? 8x16

    Emacs.pane.menubar.font: 8x16

    Emacs.foreground: white

    Emacs.background: black

    emacs.geometry:? 100x32

    posted @ 2006-02-20 13:00 ivaneeo 閱讀(2648) | 評(píng)論 (0)編輯 收藏

    你需要在你($HOME)下新增或編輯兩個(gè)文件:
    .inputrc 和 .bash_profile

    在.inputrc中要有下面三行
    set meta-flag on
    set convert-meta off
    set output-meta on

    在.bash_profile中要有下面三行
    export LESSCHARSET=latin1
    alias less='/bin/less -r'
    alias ls='/bin/ls -F --color=tty --show-control-chars'



    最后在.bashrc中添加:

    export LANG=C
    export LC_CTYPE=iso-8859-1
    這樣就可以ls --help可以顯示英文而不是顯示亂碼了.
    posted @ 2006-02-19 13:52 ivaneeo 閱讀(854) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共67頁(yè): First 上一頁(yè) 26 27 28 29 30 31 32 33 34 下一頁(yè) Last 
    主站蜘蛛池模板: 亚洲天堂免费在线| 亚洲人成电影在在线观看网色| 亚洲中字慕日产2020| 久久成人无码国产免费播放| 亚洲精品无码mv在线观看网站| 亚洲精品视频免费| 在线A亚洲老鸭窝天堂| 中文字幕久无码免费久久| 亚洲成a人片在线观看老师| 国产精品高清免费网站 | 国产免费一区二区三区VR| 亚洲AV成人片无码网站| 国产一区视频在线免费观看| 香蕉视频在线观看免费| 在线观看亚洲成人| 免费无码一区二区三区| 亚洲av产在线精品亚洲第一站| 成人奭片免费观看| 国产区图片区小说区亚洲区| 亚洲欧洲自拍拍偷精品 美利坚| 狠狠躁狠狠爱免费视频无码 | 久久久亚洲精品国产| 99精品在线免费观看| 亚洲国产成人久久| 国产国产人免费人成免费视频| 一区二区三区免费视频观看| 老色鬼久久亚洲AV综合| 在线观看免费污视频| 国产乱妇高清无乱码免费| 97亚洲熟妇自偷自拍另类图片| 在线观看特色大片免费视频| 美女被爆羞羞网站免费| 亚洲av中文无码乱人伦在线播放| 中文字幕在线免费| 朝桐光亚洲专区在线中文字幕| 亚洲精品无码永久中文字幕| 亚洲三级高清免费| eeuss影院免费直达入口| 亚洲国产超清无码专区| 亚洲国产婷婷香蕉久久久久久| 久久久精品2019免费观看|