2009-11-07 62 views

回答

7

正則表達式是一種模式匹配的形式,您可以將其應用於文本內容。舉例來說,DOS通配符?和*您可以使用當您搜索文件 。這是RegExp的一個非常有限的子集。例如,如果要查找以「fn」開頭的所有文件,後跟1到4個隨機字符,並以「ht.txt」結尾,則不能使用通常的DOS通配符來完成此操作。另一方面,RegExp可以處理更復雜的模式。

正則表達式,總之,有效地

  • 處理數據
  • 搜索和替換字符串
  • 提供擴展的字符串處理的方式。

通常,正則表達式本身可以提供字符串處理,其他功能(如內置字符串方法和屬性只能在複雜函數或循環中使用它們時纔可以)。

+0

+1非常好的比喻! – 2009-11-07 21:32:42

4

當您嘗試查找/替換/驗證複雜的字符串模式時。

2

在某些情況下,如果您需要更好的性能,您應該避免使用正則表達式來編寫代碼。一個例子是解析非常大的CSV文件。

2

正則表達式是用於解析文本的dsl(域特定語言)。就像xpath是一個用於遍歷xml的dsl。它實質上是一種通用語言中的迷你語言。您可以在很少量的代碼中完成相當多的工作,因爲它專門用於狹義目的。正則表達式的一個非常常見的用途是檢查字符串是否是電子郵件地址,電話號碼,ssn等...

4

在比較字符串(preg_match),替換子字符串(sed,preg_replace),替換字符串(sed,preg_replace),搜索文件中的字符串(grep),分割字符串(preg_split)等。

這是一個非常靈活和廣泛的模式表達式語言,它是非常有用的知道。

但是!這就像他們對撲克的評價,這很容易學,但很難掌握。

我剛碰到一個question,我認爲這對RegEx來說是完美的,請看看並自己決定。

2

還有一些情況下,正則表達式是>>不是< <合適(通常;總是有例外)。

  • 解析HTML
  • 解析XML

在上述情況下DOM解析器是幾乎總是一個更好的選擇。語法很複雜,邊緣案例太多,比如嵌套標籤。

另外一定要考慮未來的維護程序員(可能是你)。評論和/或精心挑選的方法/常量/變量名稱可能會造成一個不同的世界,特別是對於在正則表達式中不流利的開發人員而言。

+0

應該更強調單詞「不」,同時掃描我幾乎認爲你是主張使用html和xml的正則表達式 – Kris 2009-11-09 15:02:58

+0

@Kris:增加了更多的cowbell! ;) – TrueWill 2009-11-09 15:15:13

0

正則表達式對驗證自由文本輸入的格式特別有用。當然,他們不能驗證數據的正確性,只是它的格式。而且您必須記住某些類型值的區域差異(例如電話號碼或郵政編碼)。但是對於可以將有效輸入定義爲文本模式的情況,正則表達式可以快速進行驗證。

相關問題