使用Swift等价的方式使用PHP等价的正则表达式(#\ n \ s * \ n#Uis)分割字符串

问题描述 投票:0回答:1

我需要使用带有Swift的正则表达式拆分给定的多行字符串(样本here)。使用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的内容。

[我尝试使用this解决方案,但它对我来说什么都不输出(但是我可能是我以错误的方式使用了它,或者我不明白它的实际工作原理。)]]

您能给我一个提示吗?任何帮助将不胜感激:)

我需要使用正则表达式和Swift分割给定的多行字符串(此处为示例)。使用PHP(用于构建Web应用程序的语言),我可以这样做(删除注释和...

php swift regex split
1个回答
0
投票

[完成,撤消并尝试不同的方法之后,似乎我唯一需要做的就是用#\n\s*\n#Uis代替\\n\\s*\\n,并且它起作用了。我仍然需要对NSRegularExpression和许多其他Swift概念进行认真的研究,但就目前而言,这确实可以解决问题:)

© www.soinside.com 2019 - 2024. All rights reserved.