当前位置: 首页 > 面试题库 >

如何使用正则表达式分割字符串

微生毅然
2023-03-14
问题内容

我有一个字符串,"323 ECO Economics Course 451 ENG English Course 789 Mathematical Topography"我想使用regex表达式拆分此字符串,[0-9][0-9][0-9][A-Z][A-Z][A-Z]以便该函数返回数组:

Array = 
["323 ECO Economics Course ", "451 ENG English Course",  "789 Mathematical Topography"]

我将如何使用Swift进行此操作?

编辑 我的问题不同于链接的问题。我意识到您可以使用迅速拆分字符串myString.components(separatedBy: "splitting string")。问题是该问题没有解决如何制作splitting string正则表达式的问题。我尝试使用,mystring.components(separatedBy: "[0-9][0-9][0-9][A-Z][A-Z][A-Z]", options: .regularExpression)但是没有用。

如何使该separatedBy:部分成为正则表达式?


问题答案:

Swift到目前为止还没有本地正则表达式。但Foundation提供NSRegularExpression

import Foundation

let toSearch = "323 ECO Economics Course 451 ENG English Course 789 MAT Mathematical Topography"

let pattern = "[0-9]{3} [A-Z]{3}"
let regex = try! NSRegularExpression(pattern: pattern, options: [])

// NSRegularExpression works with objective-c NSString, which are utf16 encoded
let matches = regex.matches(in: toSearch, range: NSMakeRange(0, toSearch.utf16.count))

// the combination of zip, dropFirst and map to optional here is a trick
// to be able to map on [(result1, result2), (result2, result3), (result3, nil)]
let results = zip(matches, matches.dropFirst().map { Optional.some($0) } + [nil]).map { current, next -> String in
  let range = current.rangeAt(0)
  let start = String.UTF16Index(range.location)
  // if there's a next, use it's starting location as the ending of our match
  // otherwise, go to the end of the searched string
  let end = next.map { $0.rangeAt(0) }.map { String.UTF16Index($0.location) } ?? String.UTF16Index(toSearch.utf16.count)

  return String(toSearch.utf16[start..<end])!
}

dump(results)

运行此将输出

▿ 3 elements
  - "323 ECO Economics Course "
  - "451 ENG English Course "
  - "789 MAT Mathematical Topography"


 类似资料:
  • 问题内容: 我有表格形式的命令输出。我正在从结果文件中解析此输出,并将其存储在字符串中。一行中的每个元素都由一个或多个空格字符分隔,因此我正在使用正则表达式来匹配1个或多个空格并将其拆分。但是,每个元素之间都会插入一个空格: 有一个更好的方法吗? 每次拆分后都会添加到列表中。 问题答案: 通过使用,您将捕获该组,如果仅删除它们,则不会出现此问题。 但是,不需要正则表达式,没有指定任何定界符将为您将

  • 问题内容: 我真的是Go的新手,到目前为止一直都很喜欢。我正在尝试找到一种使用正则表达式而不是字符串来拆分字符串的好方法。谢谢 http://nsf.github.com/go/strings.html?f:Split! 问题答案: 如果您只想分割某些字符,则可以使用,否则我将使用。

  • 我是clojure编程的新手。我正在学习通过定义正则表达式来拆分字符串。我从这里学习https://clojuredocs.org/clojure.string/split 我想通过定义两个正则表达式来拆分一个字符串。例如: 如果输入是“Hello World!\n Have a nice Day”,那么输出应该是[“Hello”“World!”“Have”“a”“nice”“Day”] 谁能建议

  • 我想使用Gson将字符串转换为Foo对象: 下面是我的正则表达式: 如何使用此正则表达式将所有,.和替换为,,而不更改JSON中的键和值?

  • 问题内容: 我是regex的新手,我想做的是在特定条件下拆分String,但我不知道该怎么做。 这是样品/条件 我希望字符串被拆分,,,,,, 这可能吗? 问题答案: 如果 确实 需要使用正则表达式,则可能应该使用环顾四周机制,因为您不想 在 此字符 之前 或 之后 进行拆分。 输出: