gpt4 book ai didi

swift - 日期格式 dd MMMM, yyyy 的正则表达式是什么,这里 MMMM 由本地化显示。例如,对于荷兰来说,它就像 2019 年 1 月 12 日

转载 作者:行者123 更新时间:2023-11-28 07:28:34 25 4
gpt4 key购买 nike

我有一个字符串“今天是星期一,日期是 2019 年 1 月 12 日”。日期格式中的月份按语言环境显示。我正在尝试快速找出正则表达式以检查字符串是否包含日期以及它是否只从字符串中获取日期。

我尝试了不同的正则表达式看来我的正则表达式有误,但我不知道如何处理日期中的本地化月份。

 func extractDOB(memberInfo: String) -> [String] {
var toReturn = [String]()
let dobRegEx = "[0-9]{2}/s[a-zA-Z]/s[0-9]{4}"
do {
let regex = try NSRegularExpression(pattern: dobRegEx)
let nsString = memberInfo as NSString
let results = regex.matches(in: memberInfo, range:
NSRange(location: 0, length: nsString.length))
if results.count != 0 {
for result in results {
let matchRange = result.range
toReturn.append(nsString.substring(with:
matchRange))
print(toReturn)
}
}
} catch let error as NSError {
print("invalid regex: \(error.localizedDescription)")
}
return toReturn
}

字符串:这是星期一,日期是 2019 年 1 月 12 日预期输出:2019 年 1 月 12 日

最佳答案

你需要稍微改变一下你的正则表达式的模式,然后这个笨拙的片段就足够了:

let input = "Today is Monday and date is 12 januari, 2019"

let dobRegEx = "([0-9]{2}\\s[a-zA-Z,]*?\\s[0-9]{4})"

if let regExp = try? NSRegularExpression(pattern: dobRegEx, options: .caseInsensitive),
let firstMatch = regExp.firstMatch(in: input, options: .reportCompletion, range: NSRange(location: 0, length: input.count)) {

let dob = (input as NSString).substring(with: firstMatch.range) // = 12 januari, 2019
// etc...
}

注意:您可能还想考虑深入研究机器学习 (ML) 并教它识别嵌入自然语言中的日期 – 因为日期可以采用各种格式语言(取决于当前的语言环境)并且您无法编写有效的正则表达式来匹配所有可能的场景——但这有点超出了这个答案(或者在您的情况下可能是无用功) , 然而you could start here如果您对此感兴趣。

关于swift - 日期格式 dd MMMM, yyyy 的正则表达式是什么,这里 MMMM 由本地化显示。例如,对于荷兰来说,它就像 2019 年 1 月 12 日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55691299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com