2015-10-05 74 views
0

我有一個正則表達式的任務。我有一個不同模式的NSRegularExpression對象列表。另外我有一個NSString對象來定義一個源。我需要找到其中正則表達式(來自給定列表)匹配源的BEGINNINGObjective-C在字符串中查找第一個匹配的正則表達式

有沒有辦法用Objective-C

例如:

表達式圖案

  1. [a-z]
  2. [A-Z]
  3. [1-9]

Hello32

結果

表達無2適合,因爲信H對源代碼的開始。

+0

定義「源的開始」。如果我理解正確,可以逐個嘗試每個NSRegularExpression,獲取matchRange,如果matchRange通過測試,則將其添加到「成功」列表中。 – Larme

+0

用示例更新了我的問題。 –

+1

你可以在每個模式上加上'^'以強制匹配從開始 – Mariano

回答

0

您可以在每個模式上加上\A(?:並附加)以強制它們在字符串的開始處匹配。如實施例所提供的圖案將成爲:

\A(?:[a-z]) 
\A(?:[A-Z]) 
\A(?:[1-9]) 
  • \A是錨定至串的beggining(方法類似於^Multiline標誌沒有被設置)。
1

你爲什麼不試試呢?

NSString *testString = @"Hello"; 

NSArray *patterns = @[ 
    @"[a-z]", 
    @"[A-Z]", 
    @"[1-9]", 
]; 

for (NSString *pattern in patterns) { 
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern 
                      options:0 
                      error:NULL]; 
    BOOL matchAtStart = [regex rangeOfFirstMatchInString:testString 
               options:0 
                range:(NSRange){0, testString.length}].location == 0; 
    NSLog(@"'%@': %@", pattern, @(matchAtStart)); 
} 
相關問題