2016-11-11 139 views
0

我解析一些HTML和解析子字符串。我已经开始将元素的所有解析文本放入数组中。现在我需要制作返回我需要的子串的数组的函数。Swift正则表达式和分隔符

以下是我需要解析的一些数据(这些是我使用的数据的最极端情况)。

设ARR = [

ABC111-1 LOC()”, “TuTh12:15 PM - 1:30 PM东西101”,
MATT1456-1 LOC()”, “4:15 PM - 7:15 PM某处532”,
ACG7700 LOC()”, “日期:待定

]

粗体的每个子字符串是我关心的。

林创建一个循环

for i in 0...arr.count - 1 { 
    if i % 2 == 0 { 
     let product = parseProduct[arr[i]] 
     let delivery = parseSchedule[arr[i+1]] 
    } 
} 

我需要帮助创建parseProduct和parseSchedule函数返回解析字符串数组。

产品阵列的最终输出

第一循环迭代之后,我想这个结果

product = ["ABC", "111-1", "31245"] 

delivery = ["TuTh", "12:15PM", "1:30PM", "Something", "101] 
+0

能否请您给我最后的输出数组,你想从数组arr。? –

+0

@karthick我刚刚更新了这个问题 – Tahir

回答

0

你可以试试那些正则表达式

  • .*?(?= LOC)比赛从字符串的开始LOCsee here
  • (?<=\().*?(?=\))匹配从pare nthesis到另一个,它会数量在括号see here
  • .*(?= -)从字符串的开头匹配匹配-,它将匹配TuTh 12:15PM和类似see here
  • (?<=-).*时间12:00PM匹配,从-see here结束
  • DATE:.*匹配DATE:以及see here之后的所有内容。如果您还想支持小写date:,请使用不区分大小写的i标志。

声明:我对Swift不熟悉,不能用它的正则表达式引擎进行测试,所以我使用了prep引擎。您的引擎可能不支持lookahead/behind,这些正则表达式中的大部分都不起作用。

如果这些都不是你搜索的内容,发表评论,并请你的问题添加更多的信息:长数组,例外,它是区分大小写的,每个加粗子遵循什么模式等