頁面導航: 首頁網絡編程正則表達式 → 正文內容 什么是正則表達式 .

正則表達式概述 什么是正則表達式 .

發布:mdxy-dxy 字體:[增加 減小] 類型:轉載
正則表達式就是用某種模式去匹配一類字符串的公式,主要用來描述字符串匹配的工具
正則表達式概述

正則表達式在程序設計語言中存在著廣泛的應用,特別是用來處理字符串。如匹配字符串、查找字符串、替換字符串等。可以說,正則表達式是一段文本或一個公式,它是用來描述用某種模式去匹配一類字符串的公式,并且該公式具有一定的模式。
本小節將介紹正則表達式的基本概念、第一個正則表達式,以及測試正則表達式的工具Code Architects Regex Tester。


什么是正則表達式

正則表達式(Regular Expression)起源于人類神經系統的早期研究。神經生理學家Warren McCulloch和Walter Pitts研究出一種使用數學方式描述神經網絡的方法。1956年,數學家Stephen Kleene發表了一篇標題為“神經網事件的表示法”的論文,并在該論文中引入了“正則表達式”這一個概念。該論文稱正則表達式是:“正則集的代數”的表達式。因此,采用“正則表達式”這個術語。正則表達式的定義存在多種說法,具體如下:

正則表達式就是用某種模式去匹配一類字符串的公式,主要用來描述字符串匹配的工具。

正則表達式描述了一種字符串匹配的模式。它可以用來檢查字符串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。

正則表達式是由普通字符(如字符a到z)以及特殊字符(稱為元字符)組成的文字模式。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。

正則表達式就是用于描述某些規則的工具。這些規則經常用于處理字符串中的查找或替換字符串。換句話說,正則表達式就是記錄文本規則的代碼。

正則表達式就是用一個“字符串”來描述一個特征,然后去驗證另一個“字符串”是否符合這個特征。
  學過《編譯原理》的讀者可能知道不確定有限自動機(Non-deterministic finite automaton,簡稱NFA)和確定有限自動機(Deterministic finite automaton,簡稱DFA)。其實,正則表達式是一個不確定有限自動機。NFA和DFA的最大區別在于它們的狀態轉換函數。NFA可以對同一個字符串產生多種理解方式,而DFA則只有唯一的一種理解方式。也正因為如此,NFA在匹配過程中可能會回溯,NFA的效率一般要低于DFA。因此,在書寫正則表達式時盡量減少回溯來提高正則表達式的效率。

如果你使用過Windows或DOS下用于文件查找的通配符*和?,那么你不難理解正則表達式。如果你需要查找所有Word文檔,那么可能使用表達式*.doc。其中,字符*是一個通配符,它可以代表任意字符串。正則表達式和通配符具有相似性,它也可以使用一些字符(如字符.)表示任意字符。然而,它比通配符更具有精確性。
  在正則表達式中,匹配是最常用的一個詞語,它描述了正則表達式動作結果。給定一段文本或字符串,使用正則表達式從文本或字符串中查找出符合正則表達式的字符串。有可能文本或字符存在不止一個部分滿足給定的正則表達式,這時每一個這樣的部分被稱為一個匹配。其中,匹配存在下面3種類型:
形容詞性的匹配,即一個字符串匹配一個正則表達式。

動詞性的匹配,即在文本或字符串里匹配正則表達式。

名詞性的匹配,即字符串中滿足給定的正則表達式的一部分。

  正則表達式的應用非常廣泛,特別是在字符串處理方面。目前來說,正則表達式已經在很多軟件中得到廣泛了應用,如Linux、Unix、HP等操作系統,C#、PHP、Java等程序開發環境,以及很多的應用軟件中,都可以看到正則表達式的這樣或那樣的應用。正則表達式常見的應用如下:

驗證字符串,即驗證給定的字符串或子字符串是否符合指定特征,譬如驗證是否是合法的郵件地址、驗證是否為合法的HTTP地址等。

查找字符串,從給定的文本中查找符合指定特征的字符串,比查找固定字符串更加靈活方便。
替換字符串,即把給定的字符串中的符合指定特征的子字符串替換為其他字符串,比普通的替換更強大。
提取字符串,即從給定的字符串中提取符合指定特征的子字符串。

文章評論

最 近 更 新
熱 點 排 行
乐盈在线彩票 高密市 | 富阳市 | 泌阳县 | 乐至县 | 连江县 | 浪卡子县 | 阿图什市 | 互助 | 棋牌 | 晋江市 | 庆云县 | 文昌市 | 通渭县 | 南郑县 | 宜章县 | 泰安市 | 新干县 | 厦门市 | 泰来县 | 辽源市 | 连山 | 松溪县 | 永清县 | 牟定县 | 阳泉市 | 马关县 | 洛南县 | 新建县 | 元氏县 | 陆河县 | 天峻县 | 宁河县 | 绍兴县 | 岳阳县 | 梧州市 | 玉溪市 | 思南县 | 清镇市 | 瑞丽市 | 泗洪县 | 巴彦淖尔市 | 常山县 | 甘洛县 | 林西县 | 江津市 | 鹤庆县 | 陇川县 | 台东市 | 无为县 | 庆城县 | 红桥区 | 三河市 | 张家港市 | 贺兰县 | 克拉玛依市 | 庐江县 | 康乐县 | 松溪县 | 龙川县 | 同仁县 | 松江区 | 毕节市 | 格尔木市 | 施秉县 | 巴彦淖尔市 | 信阳市 | 张掖市 | 商河县 | 汉中市 | 额尔古纳市 | 绍兴市 | 昌平区 | 鸡东县 | 双江 | 徐州市 | 元阳县 | 七台河市 | 达孜县 | 蛟河市 | 桓仁 | 榆林市 | 虎林市 | 平邑县 | 岳池县 | 阳原县 | 湘潭市 | 称多县 | 高州市 | 文昌市 | 永修县 | 孟津县 | 晋宁县 | 睢宁县 | 宜宾县 | 蚌埠市 | 新巴尔虎左旗 | 和龙市 | 新巴尔虎右旗 | 济阳县 | 綦江县 | 涿州市 | 自治县 | 岐山县 | 尖扎县 | 西乌 | 景德镇市 | 彰武县 | 栾川县 | 石楼县 | 万山特区 | 九江市 | 安平县 | 沙湾县 | 永善县 | 清丰县 | 托克托县 | 平乐县 | 繁峙县 | 惠东县 | 班戈县 | 景泰县 | 大同县 | 张北县 | 响水县 | 鹿邑县 | 德惠市 | 区。 | 乐平市 | 晋州市 | 资中县 | 高淳县 | 马公市 | 奉新县 | 密山市 | 天全县 | 虹口区 | 海丰县 | 白玉县 | 彝良县 | 马边 | 达州市 | 牟定县 | 桂平市 | 时尚 | 大渡口区 | 蓬莱市 | 阿拉善左旗 | 哈尔滨市 | 安多县 | 平顶山市 | 灵寿县 | 红河县 | 黑龙江省 | 郓城县 | 阿鲁科尔沁旗 | 札达县 | 凌源市 | 仲巴县 | 华宁县 | 滦南县 | 赤城县 | 赤城县 | 塔城市 | 北安市 | 鹿邑县 | 凌海市 | 和林格尔县 | 永福县 | 来安县 | 桐城市 | 阿克陶县 | 沂南县 | 邮箱 | 鹿泉市 | 武平县 | 北流市 | 墨玉县 | 津南区 | 饶河县 | 手机 | 拜城县 | 旌德县 | 会昌县 | 揭东县 | 旬邑县 | 剑阁县 | 高青县 | 亳州市 | 广灵县 | 桂阳县 | 镇沅 | 临安市 | 镇原县 | 芜湖县 | 龙州县 | 泗水县 | 惠水县 | 施甸县 | 类乌齐县 | 长阳 | 裕民县 | 库车县 | 黄龙县 | 合水县 | 蒲城县 | 乐昌市 | 栾川县 | 读书 | 沾益县 | 五莲县 | 轮台县 | 襄城县 | 台北县 | 江源县 | 繁昌县 | 思茅市 | 永寿县 | 嘉义市 | 宽城 | 宜川县 | 延长县 | 峨眉山市 | 邵东县 | 柘城县 | 奉贤区 | 库尔勒市 | 合江县 | 浏阳市 | 邵阳市 | 阿鲁科尔沁旗 | 且末县 | 镇平县 | 黔东 | 红桥区 | 桦南县 | 蓬溪县 | 洛扎县 | 麟游县 | 天峨县 | 阿瓦提县 | 涿鹿县 | 宣武区 | 靖边县 | 桂平市 | 莱西市 | 平泉县 | 封开县 | 曲阳县 | 长沙市 | 军事 | 鄂伦春自治旗 |