相关疑难解决方法(0)

Swift提取正则表达式匹配

我想从匹配正则表达式模式的字符串中提取子字符串.

所以我正在寻找这样的东西:

func matchesForRegexInText(regex: String!, text: String!) -> [String] {
   ???
}
Run Code Online (Sandbox Code Playgroud)

所以这就是我所拥有的:

func matchesForRegexInText(regex: String!, text: String!) -> [String] {

    var regex = NSRegularExpression(pattern: regex, 
        options: nil, error: nil)

    var results = regex.matchesInString(text, 
        options: nil, range: NSMakeRange(0, countElements(text))) 
            as Array<NSTextCheckingResult>

    /// ???

    return ...
}
Run Code Online (Sandbox Code Playgroud)

问题是,这matchesInString提供了我的一个数组NSTextCheckingResult,其中NSTextCheckingResult.range的类型的NSRange.

NSRange是不相容的Range<String.Index>,所以它阻止我使用text.substringWithRange(...)

有没有想过如何在没有太多代码的情况下在swift中实现这个简单的事情?

regex string ios swift

157
推荐指数
8
解决办法
11万
查看次数

swift中的正则表达式

我对 swift 中的 NSRegularExpression 有点困惑,有人可以帮助我吗?

任务:1给出("name","john","name of john")
那么我应该得到["name","john","name of john"]. 在这里我应该避免使用括号。

任务:2给出("name"," john","name of john")
那么我应该得到["name","john","name of john"]. 在这里我应该避免括号和额外的空格,最后得到字符串数组。

任务:3给出key = value // comment
那么我应该得到["key","value","comment"]. 在这里,我应该通过避免只获取行中的字符串,=并且//
我已经尝试了下面的任务 1 代码但没有通过。

let string = "(name,john,string for user name)"
let pattern = "(?:\\w.*)"

do {
    let regex = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
    let matches = regex.matches(in: string, options: [], range: NSRange(location: 0, length: string.utf16.count))
    for match …
Run Code Online (Sandbox Code Playgroud)

regex regex-group nsregularexpression regex-greedy swift

5
推荐指数
1
解决办法
3900
查看次数

如何在Swift 2中将十六进制字符串解析为ascii等效项

在swift 2中,将十六进制字符串转换为ascii等价物的最佳方法是什么.

特定

let str1 = "0x4d 0x4c 0x4e 0x63"
let str2 = "4d 4c 4e 63"
let str3 = "4d4c4e63"
let str4 = "4d4d 4e63"
let str5 = "4d,4c,4e,63"
Run Code Online (Sandbox Code Playgroud)

我们想运行一个吐出的函数(或字符串扩展名):'MLNc',它是十六进制字符串的ascii等价物

伪代码:

  • 删除所有"垃圾",逗号空间等
  • 获取"2个字符块",然后将这些字符转换为与之等效的int strtoul
  • 构建一个字符数组并将它们合并为一个字符串

部分实施

func hexStringtoAscii(hexString : String) -> String {

    let hexArray = split(hexString.characters) { $0 == " "}.map(String.init)
    let numArray = hexArray.map{  strtoul($0, nil, 16)  }.map{Character(UnicodeScalar(UInt32($0)))}
    return String(numArray)
}
Run Code Online (Sandbox Code Playgroud)

这部分实现是否在正确的路径上?如果是这样,处理分块的最佳方法是什么?

regex string xcode swift swift2

4
推荐指数
1
解决办法
2889
查看次数

在Swift 3中用捕获组替换字符串

我有以下字符串:"@ [1484987415095898:274:Page Four]"并且我想要捕获名称,所以我写了以下regexp @\[[\d]+:[\d]+:(.*)] 它似乎工作,但现在我正在努力了解如何替换以前的字符串与捕获组一.

"Lorem ipsum @ [1484987415095898:274:Page Four] dolores" - >
"Lorem ipsum Page Four dolores"

注意,我看到了如何使用此堆栈问题获取捕获组, 但是,如何找到从中提取的原始字符串并替换它?

regex swift

4
推荐指数
1
解决办法
1868
查看次数

swift 中带有 NSRegularExpressions 的可选捕获组

我想要有多个可选的捕获组,并且我想要访问它们对应的字符串。

看起来/工作起来像这样的东西:

let text1 = "something with foo and bar"
let text2 = "something with just bar"
let regex = NSRegularExpression(pattern: "(foo)? (bar)")

for (first?, second) in regex.matches(in:text1) {
   print(first) // foo
   print(second) // bar
}

for (first?, second) in regex.matches(in:text2) {
   print(first) // nil
   print(second) // bar
}
Run Code Online (Sandbox Code Playgroud)

capture-group ios nsregularexpression swift

0
推荐指数
1
解决办法
920
查看次数