php - 使用 Swift 使用 PHP 等效的正则表达式 (#\n\s*\n#Uis) 拆分字符串
问题描述
我需要使用带有 Swift 的正则表达式拆分给定的多行字符串(此处为示例)。使用 PHP(我用于构建 Web 应用程序的语言)我这样做(在删除注释并替换一些标记之后):
// split the file contents in fragments
$fragments = preg_split("#\n\s*\n#Uis", $contents);
preg_split
如果在代码示例上执行,这就是我得到的:
Array
(
...
[2] =>
CREATE TABLE IF NOT EXISTS c_search_history (
entry_id BIGINT(64) UNSIGNED NOT NULL AUTO_INCREMENT,
entry_date_added DATETIME NOT NULL,
entry_language CHAR(2) NOT NULL DEFAULT 'es',
entry_query TEXT NOT NULL,
PRIMARY KEY (entry_id),
INDEX (entry_date_added),
INDEX (entry_language)
) ENGINE=InnoDB DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
[3] =>
CREATE TABLE IF NOT EXISTS c_search_weight_entries (
entry_id BIGINT(64) UNSIGNED NOT NULL AUTO_INCREMENT,
entry_date DATETIME NOT NULL,
entry_model VARCHAR(175) NOT NULL,
entry_model_id BIGINT(64) UNSIGNED NOT NULL,
entry_value DOUBLE NOT NULL,
PRIMARY KEY (entry_id),
INDEX (entry_date),
INDEX (entry_model),
INDEX (entry_model_id),
INDEX (entry_value)
) ENGINE=InnoDB DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
...
)
这样做的目标是获取一个 .sql 文件并将其内容展平,以便每个函数、表、过程、触发器或视图定义成为一个单行,以供以后执行。问题是我对 Swift 还很陌生,而且我无法将#\n\s*\n#Uis
正则表达式转换为可用于 NSRegularExpression 的东西。
我尝试使用此解决方案,但它对我没有任何输出(但我可能是以错误的方式使用它,或者我不明白它是如何工作的)。
你能给我一个提示吗?任何帮助将不胜感激 :)
解决方案
在完成、撤消和尝试不同的方法之后,似乎我唯一需要做的就是替换#\n\s*\n#Uis
它\\n\\s*\\n
并且它起作用了。我仍然需要对 NSRegularExpression 和许多其他 Swift 概念做一些认真的研究,但就目前而言,这已经成功了 :)
推荐阅读
- google-cloud-platform - 如何配置图表来监控服务器的内存使用情况
- angular - 从 Angular 8 中的动态 ngmodel 获取数据
- python - 合并字典中的大数据帧时,reduce 的意外行为
- thingsboard - 如何在 Thingsboard 中通过 /api/auth/login 获取 JWT_TOKEN?
- python - 谷歌云函数:Python 和 CORS
- amazon-web-services - 无法在 aws lambda 函数中调用外部 api
- c# - 如何恢复包 Visual Studio 2017
- javascript - 从我自己的 WebHosting 服务器读取多个 JSON 文件并构建几个Html 中的结构以及 Javascript 中读取的信息
- java - 无法让 Jgrid 中的 JPanel 立即对更改做出反应
- python - 在 python 中结束一个线程(也使用回调)