import Foundation
let pattern = #"(?s:(<a href="onebook\.php\?novelid=([\d]+?)".*?>(.*?)<\/a>.*?center">(.+?)<.*?center">(.+?)<.*?<td align="right">([\d]+?)<.*?<td align="right">([\d]+?)<\/td>))"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = ##"""
<table width="986" border="0" align="center" cellpadding="0" cellspacing="0"
class="cytable">
<tbody>
<tr>
<td width="126" class="sptd">作者</td>
<td width="278" class="sptd">作品</td>
<td width="168" class="sptd">类型</td>
<td width="71" class="sptd">风格</td>
<td width="63" class="sptd">进度</td>
<td width="63" class="sptd">字数</td>
<td width="73" class="sptd">作品积分</td>
<td width="138" class="sptd">发表时间</td>
</tr>
<tr>
<td align="left">
<a href="oneauthor.php?authorid=385748" target="_blank">君sola</a>
</td>
<td align="left">
<a href="onebook.php?novelid=1473506" target="_blank" title="简介:腹黑冰山美御姐与温柔黑化姑娘 标签:">探虚陵现代篇</a>
</td>
<td align="center">
原创-百合-近代现代-爱情 </td>
<td align="center">
正剧 </td>
<td align="center">
连载中 </td>
<td align="right">2996549</td>
<td align="right">9653954560</td>
<td align="center">2012-03-21 11:25:31</td>
</tr>
<tr>
<td align="left">
<a href="oneauthor.php?authorid=1696863" target="_blank">酒暖春深</a>
</td>
<td align="left">
<a href="onebook.php?novelid=4170491" target="_blank" title="简介:为生者权,替死者言 标签:">我亲爱的法医小姐</a>
</td>
<td align="center">
原创-百合-近代现代-悬疑 </td>
<td align="center">
正剧 </td>
<td align="center">
<font color='red'>已完成</font> </td>
<td align="right">878082</td>
<td align="right">3881133568</td>
<td align="center">2019-08-29 20:00:00</td>
</tr>
"""##
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression