在iOS開發中使用正則表示式分解字串
例:將下列字串中方括號[]中的內容提取出來並形成一個Array:
NSString* entry = @"[field1] [field2] [field3] [field4] [field5]";
解法一:使用componentsSeparatedByString:方法分解:
NSArray *rawFields = [entry componentsSeparatedByString:@"] ["];
NSMutableArray *fields = [NSMutableArray arrayWithArray:rawFields];
//Remove '[' from the first field
NSString* firstRawField = [rawFields[0] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if([firstRawField hasPrefix:@"["] && [firstRawField length] > 1){
[fields replaceObjectAtIndex:0 withObject:[firstRawField substringFromIndex:1]];
}
//Remove ']' from the last field
NSString* lastRawField = [rawFields[rawFields.count - 1] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if([lastRawField hasSuffix:@"]"] && [lastRawField length] > 1){
[fields replaceObjectAtIndex:(rawFields.count - 1) withObject:[lastRawField substringToIndex:[lastRawField length] - 1 ]];
}
解法二:使用正則表示式分解:
__block NSMutableArray *fields = [[NSMutableArray alloc] init];
NSError *error = NULL;
NSRegularExpression *fieldRegularExpression = [NSRegularExpression
regularExpressionWithPattern:@"\\[[^\\]]*\\]"
options:NSRegularExpressionCaseInsensitive
error:&error];
[fieldRegularExpression enumerateMatchesInString:entry options:0 range:NSMakeRange(0, [entry length])
usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
if(match.range.length > 2) {
NSRange range = NSMakeRange(match.range.location + 1, match.range.length - 2); //Remove '[' and ']'
[fields insertObject:[entry substringWithRange:range] atIndex:fields.count];
} else {
[fields insertObject:EMPTY_STRING atIndex:fields.count];
}
}];
這裡,正則表示式
@"\\[[^\\]]*\\]"
的意義為左右方括號中包含任意長度的字串,且字串不含右方括號’]’。
複習:正則表示式中,’\’代表轉義字元,’[^list]’代表不含的字符集,’*’代表重複0到無窮多個前一個字元。
相關推薦
在iOS開發中使用正則表示式分解字串
例:將下列字串中方括號[]中的內容提取出來並形成一個Array: NSString* entry = @"[field1] [field2] [field3] [field4] [field5]"; 解法一:使用componentsSeparatedBy
iOS開發之正則表示式快速教程(NSPredicate、NSRegularExpression)
1、校驗密碼強度 密碼的強度必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間 ^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 2、校驗中文 字串只能是中文 ^[\\u4e00-\\u9fa5]{0,}$ 3、由數字,26個英文字母或下劃線
在Python中使用正則表示式去掉字串裡的html標籤
有時候會獲得一些帶html標籤的字串,需要把html標籤去掉,獲得乾淨的字串,這時候可以使用正則表示式。 程式碼如下: import re htmeString = ''' <ul id="TopNav"> &nbs
php正則表示式 剔除字串中的除了漢字的字元(只保留漢字)
1)utf-8的編碼格式,匹配中文程式碼如下: <?php $str = "utf-8下匹配出中文字串"; $preg = "/[\x{4e00}-\x{9fa5}]+/u"; if(preg_match_all($preg,$str,$mat
java利用正則表示式提取字串中的整數和小數部分
最近開發遇到一個新的東西,就是前端傳過來一個字串,需要將裡面的數字提取出來,倒騰了一天,最後還是沒有倒騰出來,最後還是借鑑大佬的方法。記錄一下。 首先是前端傳來的字串“小明通過掃碼向你付款100000.566元”其中暱稱和金額不是固定的,其他是固定的。 於是便考慮使用“通過掃碼向你付
python正則表示式從字串中提取數字
python從字串中提取數字 使用正則表示式,用法如下: ## 總結 ## ^ 匹配字串的開始。 ## $ 匹配字串的結尾。 ## \b 匹配一個單詞的邊界。 ## \d 匹配任意數字。 ## \D
java 利用正則表示式去處字串中的所有空格
轉載自xcmercy的部落格 目標 去除字串中所有的空白字元,包括空格、製表符、回車符等所有空白字元 思路 根據字串長度,利用迴圈遍歷字串此方法太笨拙。這裡利用正則表示式,匹配所有的空白字元,然後將匹配到的空白字元替換為 “” 空串即可。 程式碼 private St
利用正則表示式去除字串中的空格
\s* 表示若干個空格(可以是0個)。 \s+ 表示一個或多個空格 public class Test { public static void main(String[] args) {
正則表示式擷取字串中的數字
方法一: String str="fsdfdsf12315f15哈12的"; String regEx="[^0-9]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); String n
java-使用正則表示式擷取字串中的時間資訊
package com.yr.method; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Aut
使用正則表示式從字串中查詢子字串
直接上程式碼: String string = "asdasd#_%12.gifdadsa#_%2324.gif"; String regx = "#_%\\d+.gif"; Patter
正則表示式取出字串中的數字
public static void main(String[] args) {String a="love23next234csdn3423javaeye";String regEx="[^0-9]"; Pattern p = Pattern.compile(regEx)
正則表示式判斷字串中是否有漢字
String ChineseCharactersStr = “這裡是漢字也有yingwen”; 需要匯入 import java.util.regex.Matcher; import java.u
Js 正則表示式匹配字串中是否含有中文
通常在特定的情景裡,有的字串是不允許存在中文字元的,因此我們可以通過正則表示式來匹配。廢話不多說,上程式碼。 JS: function checkChinese(obj_val){ var reg = new RegExp("[\\u4E
php使用正則表示式提取字串中尖括號、小括號、中括號、大括號中的字串
</pre><p>PHP使用正則表示式提取字串中尖括號<>、小括號()、中括號[]、大括號{}中的字元示例,需要的朋友可以參考下</p><p>
Python 正則表示式匹配字串中的http連結
利用Python正則表示式匹配字串中的http連結。主要難點是用正則表示出http 連結的模式。 import re pattern = re.compile(r'http[s]?://(?:[a-z
舉例說明在android中使用正則表示式去掉字串中標點符號及其他一些特殊符號的方法
在android中使用正則表示式與在java中使用正則表示式是有區別的,比如使用正則表示式去掉一個字串中的標點符號及一些特殊符號時,在java中可以使用的方法是: public static String format(String s){ String str=s.r
正則表示式去除字串的首尾空格,合併字串中的多個空格為一個
今天維護一個簡單的搜尋功能:需求是可以多詞高亮搜尋,那好吧,無非把輸入的字串拆分成一個數組。然後把搜尋到的內容中的這個詞高亮。 1、字串處理 var searchTest=" 你好 妹妹 哎呀 不要啦 "; //去除開頭空格 searc
php 中正則表示式詳解
概述 正則表示式是一種描述字串結果的語法規則,是一個特定的格式化模式,可以匹配、替換、擷取匹配的字串。常用的語言基本上都有正則表示式,如JavaScript、java等。其實,只有瞭解一種語言的正則使用,其他語言的正則使用起來,就相對簡單些。文字主要圍繞解決下面問題展開。 有哪些常用的
Python中正則表示式re.match的用法
re.match(pattern, string, flags) 第一個引數是正則表示式,如果匹配成功,則返回一個Match,否則返回一個None; 第二個引數表示要匹配的字串; 第三個引數是標緻位,用於控制正則表示式的匹配方式,如:是否區分大小寫,多行匹配等等。 需要特別注意的是,這個方法並不是完