我正在解析一些HTML并解析子字符串。首先,我将从元素中解析出的所有文本放入数组中。现在,我需要使函数返回需要的子字符串数组。

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

令arr = [

“ ABC 111-1 LOC(31245)”,“ TuTh 12:15 PM-1:30 PM Something 101”,
       “ MATT 1456-1 LOC(1248)”,“ Sa 4:15 PM-7:15 PM SomePlace 532”,
       “ AC G7700 LOC(1248)”,“日期:待定”

]

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

我正在创建一个循环

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


我需要创建parseProduct和parseSchedule函数的帮助,这些函数返回parse子字符串的数组。

产品阵列的最终输出

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

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

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

最佳答案

您可以尝试那些正则表达式


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


免责声明:我对Swift不熟悉,无法测试其regex引擎,因此我使用了prep引擎。您的引擎可能不支持先行/后退,并且大多数这些正则表达式将无法正常工作。

如果不是您要搜索的内容,请留下评论,并在问题中添加更多信息:更长的数组,异常,是否区分大小写,每个加粗的子字符串遵循的模式等。

10-05 23:13
查看更多