This is test
此行中有两个选项卡(\ t)。我想摆脱从开始到第一个Tab键的部分,即“ This”,并且我使用了以下模式:
:s/.\{-}\t//g
它说找不到图案。如果使用以下命令,则两个选项卡都会被替换,这不是我想要的。为什么第一个模式不起作用?
:s/.*\t//g
答案 0 :(得分:6)
您的第一次尝试无效,因为您匹配的是任何字符中最少的数字,后跟制表符。任何字符的最少数目为零(0)。因此,您的两个标签都匹配,没有其他任何字符。
根据评论,以上解释不正确。
这是一种可能的解决方案。
:s/^[^\t]*\t//
这从头^
开始,捕获了任意数量的非制表符[^\t]*
,直到到达制表符\t
。
答案 1 :(得分:1)
由于func getSteps() {
let startDate = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: Date())!
let endDate = Date()
print("Collecting workouts between \(startDate) and \(endDate)")
let predicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate, options: HKQueryOptions.strictEndDate)
let query = HKSampleQuery(sampleType: HKQuantityType.quantityType(forIdentifier: .distanceWalkingRunning)!, predicate: predicate, limit: HKObjectQueryNoLimit, sortDescriptors: nil) { (query, results, error) in
for item in results! {
print(item)
}
}
store.execute(query)
}
命令中的/.\{-}\t
标志,您的模式g
不起作用。该标志启用全局匹配,因此它匹配两次。只需删除该标志,它将起作用。另外,删除某些内容时,您可以省略:s
中的 replacement 部分:
:s
完整的:s/.\{-}\t
也可以。请注意,在任何一种情况下,都不应像您描述的那样说“找不到模式”。如果您看到该消息,则示例与实际文本之间会有其他差异。