将正则表达式与 NSPredicate 结合使用

2024-03-07

Aim

  • Using NSPredicate我想使用正则表达式来匹配所有以“Test”开头的字符串
  • 我特别想用Regex and NSPredicate.

问题

  1. 我犯了什么错误?
  2. 使用正则表达式来实现我想要做的事情的正确方法是什么?

代码(我的尝试,不起作用)

let tests = ["Testhello", "Car", "[email protected] /cdn-cgi/l/email-protection", "Test", "Test 123"]
let pattern = "^Test"
let predicate = NSPredicate(format: "SELF MATCHES %@", pattern)

for test in tests {
    let eval = predicate.evaluate(with: test)
    print("\(test) - \(eval)")
}

Output

Testhello - false
Car - false
[email protected] /cdn-cgi/l/email-protection - false
Test - true
Test 123 - false

所使用的正则表达式NSPRedicate and MATCHES必须匹配整个字符串,所以你需要使用

let pattern = "Test.*"

或者 - 如果输入字符串中可以有多行:

let pattern = "(?s)Test.*"

.*消耗字符串的其余部分。

如果字符串必须以Test, use

let pattern = "(?s).*Test"

你甚至不需要^ or $锚点在这里,因为它们在这里是隐式的。

如果字符串必须contain a Test子串,使用

let pattern = "(?s).*Test.*"

请注意,尽管由于第一个导致的高回溯,但这并不有效.*.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将正则表达式与 NSPredicate 结合使用 的相关文章

随机推荐

  • 通过 SSL 的 REST WCF 服务

    我正在尝试通过 SSL 配置 REST WCF 服务 但我不断收到 找不到基地址 与端点的方案 https 匹配 与绑定 WebHttpBinding 注册基地址方案是 http 有人可以看一下我的配置文件吗 谢谢
  • 如何在 OpenSSL 中使用 AES-128-ECB Alg 生成带有 PEM 编码的 PKCS8 密钥

    我想知道如何使用 openssl cmd 生成以下密钥 AES 128 ECB BEGIN PRIVATE KEY Proc Type 4 ENCRYPTED DEK Info AES 128 ECB 379AB79E55059F9A ga
  • C++ Typedef 和运算符重载

    如果你定义一个类似的类型typedef int MY INT 并继续重载 MY INT 的加法运算符 例如 MY INT operator MY INT a MY INT b will MY INT a b a b 不同于 int A B
  • FirstOrDefault() 无法与 ?? 结合操作员

    据我所知 linq 方法FirstOrDefault 回报null如果记录集为空 为什么不能使用 针对函数的运算符 就像这样 Double d new Double FirstOrDefault 0 0 Update 我不想检查是否d is
  • Abs、sign 等在 F# 中是如何实现的

    我找到 abs 10 abs 10L 两者都有效 于是我想知道F 是如何实现的 并在源代码中进行了搜索 type AbsDynamicImplTable lt T gt let AbsDynamic x AbsDynamicImplTabl
  • 给定一个完全由字符串元组列表表示的线性顺序,将该顺序输出为字符串列表

    给定形式的项目对 a b where a b means a gt b 例如 best better best good better good 我想输出一个表单列表 best better good 由于某种原因 这非常困难 有什么想法吗
  • 如何使用node.js基于id(transectionid)组合两个集合?

    我有横切和购买集合 其中包含横切和购买详细信息 现在我想将其转换为单个集合 基于横断面 我们需要合并文档 以下是我的横断面收集数据 transectionid 1 transectionamount 2000 transectiondate
  • 如何从备份文件中检索数据库的逻辑文件名

    我正在研究如何的步骤使用 SQL 脚本 T SQL 恢复数据库备份 http blog sqlauthority com 2007 02 25 sql server restore database backup using sql scr
  • 如何确定 JNI 全局引用内存泄漏的原因?

    我正在使用 Tomcat 停止我的 Web 应用程序后仍然存在对类加载器的引用我的网络应用程序的实例 结果是大量内存 主要与静态数据相关 将不会被释放 迟早这会导致OutOfMemoryError 我拍了一张heap dump我意识到它是由
  • VLC录制rtsp流

    我在使用 VLC 播放器录制 rtsp 流时遇到问题 实际上我的方法在 MacOS X 中有效 但在 Windows 中无效 命令行 vlc vvv rtsp admin email protected cdn cgi l email pr
  • 如何使用 Powershell 枚举 IIS 网站并查找每个网站的应用程序池?

    我可以使用以下方式搜索网站 Get WmiObject Namespace root WebAdministration Class Site Authentication PacketPrivacy ComputerName server
  • 使用 CUDA 生成排列

    我正在阅读有关 CUDA 的内容 我尝试实现一个简单的代码来创建每个可能的排列array a b c d 但我不知道如何实现 CUDA 方式 因为我读到的所有示例都是这种形式a blockIdx x b blockIdx x c block
  • Xcode 无法使用 Apple ID 登录

    最近我想用Xcode归档我的App 然后Xcode说我必须再次输入我的Apple ID和密码 也许我的登录信息丢失了 我又尝试了一次 但总是失败 If I input a wrong password I get a correct res
  • 堆管理

    我知道有一个元数据存储在期间使用的辅助信息free realloc 当我们只提供指针时 我对堆几乎没有疑问 堆栈是按进程分配的 毫无疑问 但对堆不确定 无论堆信息是全局维护的 还是每个进程都会有某种机制来保存有关为该特定进程分配的内存的信息
  • Nose 未运行 Django 文档测试

    如同这个问题 https stackoverflow com questions 2614363 why isnt django nose running the doctests in my models 然而 就我而言 我的模型都没有d
  • Facebook 个人资料 ID 和 uid 之间有区别吗?

    我有一个应用程序 我通过以下代码片段获取应用程序用户的 Facebook uid FB login function response if response authResponse FB getLoginStatus function
  • 如何使用 Dagger2 在 ViewModel 中注入依赖项

    我正在尝试在现有项目中实现新的架构 MVVM RxJava2 Dagger2 Retrofit 我已经建立了整个上述架构并在 HomeActivity 上进行了测试 HomeViewModel 中注入的依赖项 所以现在我试图在Fragmen
  • 在 php 中统计 mongodb

    我有一个集合用户 它有2个参数 用户名 付费 用户名是一个字符串 付费也是一个字符串 我应该计算有多少个带有参数paid true 的用户 这是我的尝试 如果有 mongo 专家可以帮忙 谢谢 新驱动没有实现 cursor gt count
  • 仅使用 CSS 突出显示表行中的所有行跨度

    有没有办法让 CSS 突出显示整行 包括行跨度内的单元格 而不仅仅是第一行 正如你从示例中看到的 只有该行的第一行被突出显示 而其他单元格没有突出显示 这显然看起来很混乱 我宁愿只使用 CSS 来清除它 但如果有的话会使用 Javascri
  • 将正则表达式与 NSPredicate 结合使用

    Aim Using NSPredicate我想使用正则表达式来匹配所有以 Test 开头的字符串 我特别想用Regex and NSPredicate 问题 我犯了什么错误 使用正则表达式来实现我想要做的事情的正确方法是什么 代码 我的尝试