【问题标题】:Swift Regex & DelimitersSwift 正则表达式和分隔符
【发布时间】:2016-11-11 10:16:46
【问题描述】:

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

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

让 arr = [

"ABC 111-1 LOC (31245)", "TuTh 12:15PM - 1:30PM Something 101",
"MATT 1456-1 LOC (1248)", "Sa 4:15PM - 7:15PM SomePlace 532",
"AC G7700 LOC (1248)", "DATE: TBA "

]

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

我正在创建一个循环

 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]

【问题讨论】:

  • 你能给我一个你想要的数组arr的最终输出数组吗?
  • @karthick 我刚刚更新了问题

标签: arrays regex swift delimiter


【解决方案1】:

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

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

免责声明:我不熟悉 Swift,无法使用它的正则表达式引擎进行测试,所以我使用了 prep 引擎。您的引擎可能不支持前瞻/后视,并且这些正则表达式中的大多数都不起作用。

如果这些不是您搜索的内容,请发表评论并为您的问题添加更多信息:更长的数组、异常、是否区分大小写、每个粗体子字符串遵循什么模式等。

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    相关资源
    最近更新 更多