程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 30分鐘正則表達式指導2

30分鐘正則表達式指導2

編輯:.NET實例教程

標點的另一個用法是使用“(?#comment)”語法包含評論。一個更好的辦法是設置“Ignore Pattern Whitespace”選項,它允許空白字符插入表達式然後當使用表達式時忽略它。設置了這個選項之後,任何文本每行末尾在數字符號“#”後面的東西都被忽略。例如,我們可以格式化先前的例子如下:

31. Text between Html tags, with comments

(?<=    # Search for a prefix, but exclude it
  <(\w+)> # Match a tag of alphanumerics within angle brackets
)          # End the prefix

.*        # Match any text

(?=     # Search for a suffix, but exclude it
  <\/\1>  # Match the previously captured tag preceded by "/"
)         # End the suffix

貪婪與懶惰


當一個正則表達式有一個可以接受一個重復次數范圍的量詞(像“.*”),正常的行為是匹配盡可能多的字符。考慮下面的正則表達式:

32. a.*b -- The longest string starting with a and ending with b

如果這被用來搜索字符串“aabab”,它會匹配整個字符串“aabab”。這被稱為“貪婪”匹配。有些時候,我們更喜歡“懶惰”匹配,其中一個匹配使用發現的最小數目的重復。表2中所有的量詞可以增加一個問號“?”來轉換到“懶惰”量詞。這樣,“*?”的意思就是“匹配任何數目的匹配,但是使用達到一個成功匹配的最小數目的重復”。現在讓我們試試懶惰版本的例子(32):

33. a.*?b -- The shortest string starting with a and ending with b

如果我們把這個應用到相同的字符串“aabab”,它會先匹配“aab”然後匹配“ab”。

*? 重復任意次數,但盡可能少 +?  匹配一次或多次,但盡可能少 ?? 重復零次或多次,

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved