1. 程式人生 > >Objective-C利用正則表示式進行搜尋時正則關鍵字的轉義

Objective-C利用正則表示式進行搜尋時正則關鍵字的轉義

利用正則表示式進行搜尋時如果不對正則關鍵字進行轉義常常會造成搜尋結果的錯誤,如輸入?就會匹配到全部結果,就需要對搜尋關鍵字進行轉義處理:
RegExpMultiline 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字元本身,請使用\ \$。

( )
標記一個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用\ ( 和\ )。

*
匹配前面的子表示式零次或多次。要匹配 * 字元,請使用\ *。

+
匹配前面的子表示式一次或多次。要匹配 + 字元,請使用\ +。

.
匹配除換行符 \n之外的任何單字元。要匹配 .,請使用 \.

[ ]
標記一箇中括號表示式的開始。要匹配 [,請使用 \[。

?
匹配前面的子表示式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字元,請使用 \?。

\
將下一個字元標記為或特殊字元、或原義字元、或向後引用、或八進位制轉義符。例如, ‘n’ 匹配字元 ‘n’。’\n’ 匹配換行符。序列 ‘\\’ 匹配 “\”,而 ‘\(’ 則匹配 “(”。

^
匹配輸入字串的開始位置,除非在方括號表示式中使用,此時它表示不接受該字元集合。要匹配 ^ 字元本身,請使用 \^。

{ }
標記限定符表示式的開始。要匹配 {,請使用 \{。

|
指明兩項之間的一個選擇。要匹配 |,請使用 \|。

OC中的程式碼:

    key = [key stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"];
    key = [key stringByReplacingOccurrencesOfString:@"?" withString:@"\\?"];
    key = [key stringByReplacingOccurrencesOfString:@"+" withString:@"\\+"];
    key = [key stringByReplacingOccurrencesOfString:@"."
withString:@"\\."]; key = [key stringByReplacingOccurrencesOfString:@"*" withString:@"\\*"]; key = [key stringByReplacingOccurrencesOfString:@"^" withString:@"\\^"]; key = [key stringByReplacingOccurrencesOfString:@"|" withString:@"\\|"]; key = [key stringByReplacingOccurrencesOfString:@"$" withString:@"\\$"]; key = [key stringByReplacingOccurrencesOfString:@"(" withString:@"\\("]; key = [key stringByReplacingOccurrencesOfString:@")" withString:@"\\)"]; key = [key stringByReplacingOccurrencesOfString:@"[" withString:@"\\["]; key = [key stringByReplacingOccurrencesOfString:@"]" withString:@"\\]"]; key = [key stringByReplacingOccurrencesOfString:@"{" withString:@"\\{"]; key = [key stringByReplacingOccurrencesOfString:@"}" withString:@"\\}"];

要注意不要隨意打亂順序~

相關推薦

Objective-C利用表示式進行搜尋關鍵字轉義

利用正則表示式進行搜尋時如果不對正則關鍵字進行轉義常常會造成搜尋結果的錯誤,如輸入?就會匹配到全部結果,就需要對搜尋關鍵字進行轉義處理: 匹配輸入字符串的結尾位置。如果設置了RegExp對象的Mult

WHERE子句使用表示式進行搜尋過濾

正則表示式:在列值內進行匹配(萬用字元匹配整列) 1基本字元匹配 SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000’ ORDER BY prod_name; SELECT p

C++利用表示式進行字串的替換

主要要加上標頭檔案#inlcude,這也是劍指offer上的題目 void replaceSpace(string str,int length) { string pattern=" "; regex re(p

利用表示式進行字串替換(replace方法)

語法 str.replace(regexp|substr, newSubStr|function) 引數 regexp(pattern) 一個RegExp物件或者其字面量。該正則所匹配的內容會被第二個引數的返回值替換掉。 substr(pattern) 一個要被 newSubStr 替換

MFC利用表示式進行密碼匹配

最近用到MFC中對密碼進行驗證,因此對正則表示式進行了簡單的研究,總結如下: 1. 標頭檔案支援:  #include <regex> 2. std::regex不支援CString型別的模式設定和字串匹配,需要進行轉換, 可以考慮將其轉換為std::stri

js利用表示式進行字元替換

例一:把所有逗號“,”轉換成換行。 var reg = new RegExp(",", "g");//正則表示式,第一個引數是目標物件,第二個引數g,表示全部替換。 str.replace(reg, "\r\n"); 例二:把換行、空格、Tab替換成逗號。 str.re

Source Insight中使用表示式進行高階替換

        問題描述:         程式碼中有個斷言函式,假設叫MyAssert,只有一個引數,用法例如: MyAssert(a >

Word中使用表示式進行查詢和替換(高效進行文書處理)

術語 開始前,我們先定義一對術語: 萬用字元指的是您可以用來代表一個或多個字元的鍵盤字元。例如,星號 (*) 通常代表一個或多個字元,問號 (?) 通常代表單個字元。 對我們來說,正則表示式指的是您可以用來查詢和替換文字模式的文字字元和萬用字元組合。文字字元指的是必須存在於目標文

C# 利用百度AI進行人臉識別/搜尋

人臉識別,聽上去好像很牛批,不過我們能做的也就是呼叫一下人家的API而已,記錄一下我呼叫百度人臉識別API的過程。 首先登陸百度雲管理後臺,建立一個人臉識別應用 右側選單開啟人臉庫,新建一個組,在組裡建立一個使用者,併為這個使用者上傳圖片(人臉照),這個分組跟照片

xcode中使用表示式搜尋替換程式碼

有這樣的需求:類似於GLOBAL_STR(@"請繼續新增"); 這樣的程式碼,需要批量修改為:GLOBAL_STR(@"請繼續新增", nil);這裡使用普通的查詢替換不能夠達到目的,需要用到正則表示式:GLOBAL_STR(.*);替換文字的正則:GLOBAL_STR(.$

表示式進行大陸手機號碼規則校驗

1.十一位 2.以13*、18*、15*(除了154)、145、147開頭 <script type="text/javascript"> function checkMobileNo(){ var s=/^((1[38])\d)|(15[0-35-9])|(1

python表示式進行字串的查詢

python進行字串的查詢,查找出現的位置 import re ####列表返回 pattern=re.compile(r'\d+') re1=pattern.findall('run 123 and 456') print(re1) ######迭代器返回 i

通過表示式進行過濾日期

----------------正則表示式--------日期校驗 格式為2017/01/01 (([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})/(((0[13578]|1[

[表示式] 預搜尋(零寬斷言)詳解

什麼是零寬斷言? 零寬斷言的意思是(匹配寬度為零,滿足一定的條件/斷言) 我也不知道這個詞語是那個王八蛋發明的,簡直是太拗口了。 零寬斷言用於查詢在某些內容(但並不包括這些內容)之前或之後的東西,也就是說它們像 \b ^ $ \< \> 這樣的錨定作用,僅僅用

表示式進行篩選(轉載)

從各個網站查詢最後總結符合自己的專案:   // 用來取<div style="line-height:20px;font-size:10pt">內容</div> 中間的內容      String rgex="(?<=<[D,d][I,i

1024. 科學計數法 (20) (scanf 按表示式進行拆分)

科學計數法是科學家用來表示很大或很小的數字的一種方便的方法,其滿足正則表示式[+-][1-9]"."[0-9]+E[+-][0-9]+,即數字的整數部分只有1位,小數部分至少有1位,該數字及其指數部分的正負號即使對正數也必定明確給出。現以科學計數法的格式給出實數A,請編寫程式

使用表示式進行xml資料驗證

XML Schema是定義XML的資料定義檔案,以.xsd作為檔案的副檔名。它也以被用來定義一類XML檔案。 通常,一些特殊含義的資料不能通過系統預設的資料結構(型別)清楚地描述。XML Schema 規範中宣告:可以通過facet來限制(restriction)簡單型別,從

表示式進行批量查詢替換

工作中,我需要把類似 a1b2c a2b3c a3b4c ... 替換成 a1xb2c a2xb3c a3xb4c ... abc都代表相匹配的欄位,1234代表不規則數字,x代表要加上的欄位 查詢:a{/z}b{/z}c 替換:a{1}xb{2}c 問題解決!

PHP表示式基礎之認識表示式

正則表示式是我們平常在程式開發過程中經常用到的一種工具,有關於它的起源以及除程式之外的應用場景咱就不贅述了,咱們只看它在程式中是如何來應用的。 這個正則表示式在我們程式中通常是把它當做一種模式去匹配一類字串,通俗地講,就是用一個字串描述一個特徵,完事驗證另外一個字串是否符合這個特徵的公式。你

C#利用NPOI對Excel進行基本操作

C#利用NPOI操作Excel詳解 一、 下載npoi控制元件,並進行引用。 1.下載地址: 2.引用npoi (1)、下載後的npoi包括5個dll檔案: (2)、下載完成之後首先建立一個控制檯程式,然後在視圖裡面,調出解決方案資源管理器,點選“引用”>