正则表达式捕获组 swift

2023-12-02

我在字符串中有一个正则表达式搜索方法:

extension String {
    func searchRegex (regex: String) -> Array<String> {
        do {
            let regex = try NSRegularExpression(pattern: regex, options: NSRegularExpressionOptions(rawValue: 0))
            let nsstr = self as NSString
            let all = NSRange(location: 0, length: nsstr.length)
            var matches : Array<String> = Array<String>()
            regex.enumerateMatchesInString(self, options: NSMatchingOptions(rawValue: 0), range: all) {
                (result : NSTextCheckingResult?, _, _) in
                let theResult = nsstr.substringWithRange(result!.range)
                matches.append(theResult)
            }
            return matches
        } catch {
            return Array<String>()
        }
    }
}

效果很好。但如果我有一个正则表达式product_title:\['(.*)'它返回我product_title:[\'Some title bla bla\'但我只需要这部分(.*).

我是 swift 的新手,但在 python 中这个问题通过使用解决了groups()功能。如何在 swift 中使用捕获组。请举个例子。


NSTextCheckingResult has a numberOfRanges财产和rangeAtIndex()方法,让您可以获取各个捕获组的范围。因此,如果您想要第一个捕获组而不是整个匹配的字符串,您可以将代码修改为:

        var matches : Array<String> = Array<String>()
        regex.enumerateMatchesInString(self, options: NSMatchingOptions(rawValue: 0), range: all) {(result : NSTextCheckingResult?, _, _) in
            let capturedRange = result!.rangeAtIndex(1)
            if !NSEqualRanges(capturedRange, NSMakeRange(NSNotFound, 0)) {
                let theResult = nsstr.substringWithRange(result!.rangeAtIndex(1))
                matches.append(theResult)
            }
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式捕获组 swift 的相关文章

  • `navigator.geolocation.getCurrentPosition()` 在 iOS PWA 上挂起

    我有这个片段 const getCurrentPosition gt new Promise
  • iOS、通用链接、Swift。 continueUserActivity 未调用

    我正在为我们的 iOS 应用程序实现通用链接 这是我的一小部分 AppDelegate private func application application UIApplication openURL url URL sourceApp
  • 如何使用正则表达式验证带有可选百分比符号的小数?

    正如问题的标题 我需要使用以下值验证正则表达式 最多 2 个小数位和 9 个整数 带有可选的百分比符号 Valid 10 0 1111111 12 15 2 10 2 3 Invalid 12 02 123456789123 123 I t
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • Python 中的正则表达式匹配长度超过八个字母的任何内容

    尽管尝试掌握 grep 和相关的 GNU 软件 但我还没有接近掌握正则表达式 我确实喜欢它们 但我还是觉得它们有点碍眼 我想这个问题对某些人来说并不困难 但我花了几个小时试图弄清楚如何在我最喜欢的书中搜索大于一定长度的单词 最后 想出了一些
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • Swift - 元类型 .Type 和 .self 之间有什么区别?

    元类型有什么区别 Type and self在斯威夫特 Do self and Type返回一个struct 我明白那个 self可以用来检查dynamicType 你如何使用 Type 首先也是最重要的是查看 Apple 文档type o
  • “预期的 ';'在 Swift 下的顶级声明符之后”

    我正在尝试将所有颜色设置在一个 Swift 文件中 该文件可以在我的整个应用程序中使用 下面的代码会导致 import Foundation import UIKit class DotColors let tsblueColor UICo
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • 根据一个数组对多个数组进行排序

    如何根据数组对一堆数组进行排序createdAt 例如 2015 11 02 19 19 35 0000 将它们组合成另一种类型 字典 以便在 tableView 中使用是否有益 如果有的话如何 var comment AnyObject
  • 如何解决 Xcode 5 中的红色(已移动)文件?

    在 Xcode 4 中 当您要移动文件时 可以通过单击右侧菜单中的按钮并通过 Finder 选择新位置来解析文件的新位置 在 Xcode 5 中 右侧菜单中没有按钮 我还没有找到任何方法通过右键单击文件或顶部菜单栏选项来指定文件的新位置 在
  • 叠加 SKScene 未显示

    我正在尝试将 SKScene 覆盖在 SCNScene 上 当我在模拟器和 iPhone6 上运行我的应用程序时 overlayScene SKScene 按预期显示 但是当我尝试在 iPhone5 上运行它 尝试了 2 个不同的设备 时
  • Firebase ref.removeAllObservers() 是否也会递归删除子观察者?

    我看到了一些与此相关的问题 但没有一个真正证实了我的疑问 If I removeAllObservers 在父节点上 这是否也会递归地删除可能已附加在所有子节点和子节点的子节点等处的所有其他观察者 递归地 API 文档为removeAllO
  • 当直接从 usdz 文件而不是 Reality Composer 文件加载模型时,如何在 RealityKit 中渲染阴影?

    将模型直接从 usdz 文件添加到场景锚点时 模型下方不会出现接地阴影 如果您将模型导入 RealityComposer 并添加 RealityComposer 场景 则会出现这些 但是 您可以在不使用 RC 的情况下启用接地阴影吗 我尝试
  • CoreBluetooth:检测设备超出范围/连接超时

    我正在设计一个 iOS 框架来处理多个 BLE 设备 均为同一类型 目前一切都运行良好 除了一件事 客户想要一个包含可用设备的列表 但是 我如何检测过去发现的设备何时不再可用 当我尝试连接到不再可用的设备时 会出现另一个问题 文档说 连接尝
  • SpriteKit的更新函数:时间与帧率

    一般来说 我对编程和 Spritekit 很陌生 并且有兴趣探索毫秒和帧率之间的关系 以及如何使用更新函数作为两者之间的中介 帧率与毫秒 从本质上讲 帧速率和时间之间的主要区别在于时间始终一致 而帧速率则不然 由于密集的图形程序 它可能会下
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的
  • 更改 iOS7 中 UIAlertView 的字体大小

    我想更改alertView中消息文本和标题文本的字体大小 苹果网站上没有任何文档谈到这一点 但苹果在其子类注释中表示 UIAlertView 类旨在按原样使用 请参考以下链接 https developer apple com librar

随机推荐

  • Java:无法将 Gridlayout 应用于 Jscrollpane。获取 获取 java.lang.ClassCastException

    我使用 Gridlayout 将 4 个元素放置在一行中 首先我有一个 JPanel 一切工作正常 对于行数变大并且我必须能够向下滚动的情况 我对其进行了一些更改 现在我有了我的JPanel与一个JScrollPane添加了它 我使用了相同
  • jqgrid日期排序和格式化

    我需要以两种格式显示日期 例如 mm dd yyyy 和 mm dd yyyy hh mm ss 我发现我们可以在 colmodel 中使用 formatoptions formatoptions srcformat ISO8601Long
  • 将二进制数分成五位数字的组

    在 python 中 有什么巧妙的技巧可以将二进制数分成五位数字的组吗 00010100011011101101110100010111 gt 00010 00110 10111 编辑 我想编写一个密码 编码器来生成 易于通过电话读取 的令
  • Next.js 页面和 API 调用的不同 404 页面

    是否可以在 Next js 中配置两个不同的 404 页面 一个用于渲染页面 另一个用于 API 路由 我希望 API 调用的 404 页面以 JSON 格式返回 而所有其他页面则以 HTML 格式返回 是的 您只需在 api 页面路由下创
  • 服务器发送事件和asp经典

    我制作了一个 ASP 脚本 其中包含服务器发送事件所需的所有标头 客户端脚本正在运行 我用 PHP 脚本对其进行了测试 效果很好 ASP 脚本可以工作 如果您从 URL 行调用它 它会返回预期的消息 但当 javascript 调用它时 元
  • 在 matplotlib 中的单独图中绘制子图轴[重复]

    这个问题在这里已经有答案了 假设我有以下代码 修改版本matplotlib gridspec 教程 import matplotlib pyplot as plt def make ticklabels invisible fig for
  • 使用交叉验证 (CV) 计算 scikit-learn 多类 ROC 曲线

    我想用 ROC 曲线评估我的分类模型 我正在努力计算交叉验证数据集的多类 ROC 曲线 由于交叉验证 训练集和测试集没有划分 在下面 您可以看到我已经尝试过的代码 scaler StandardScaler with mean False
  • E/Web 控制台 (8272):在视图分页器中加载 Web 视图时,未捕获引用错误:函数名称未定义:1

    我正在尝试在视图寻呼机中加载网络视图 public View onCreateView LayoutInflater inflater ViewGroup container Bundle savedInstanceState View v
  • 我可以运行 ASPX 并 grep 结果而不发出 HTTP 请求吗?

    如何在没有 URL 和 HTTP 的情况下对一个简单的 ASP NET 文件进行函数调用 并捕获它生成的字节流 更多背景信息 我需要某种模板可以在里面放入一些逻辑 以呈现一些像文本文件一样的 INI 我放弃了那些从Java移植的库 并提出了
  • 将选项卡栏图标颜色从默认蓝色更改为

    我试图将选项卡栏图标颜色从默认的蓝色更改为红色 但收到此错误 程序中出现杂散 342 我在 void recolorItemsWithColor 以及实现部分收到错误 有办法解决这个错误吗 是否有另一种方法可以将标签栏图标从默认蓝色更改为其
  • 将弧度转换为度、分和秒

    我正在寻找一种将 C 语言中的小数转换为度数的方法 例如 C 语言中的 asin 函数返回一个十进制数 但我需要该数字以度 分 秒为单位 例如1 5 就是 1 30 0 The asin函数返回弧度 圆中有 2 弧度 圆有 360 度 一度
  • 如何使用 RavenDB 中的自定义 JSON.NET 转换器反序列化为动态 DLL 中的类型?

    我的 RavenDB 对象是根据动态加载的 DLL 中的类型创建的 我无法将 DLL 加载到当前的执行上下文中AppDomain 因此 JSON 反序列化器无法找到类型 我将如何使用定制转换器使用运行时加载的程序集中的类型 NB I tri
  • 如何创建一个动态相等实现,您可以在其中传递要比较的属性名称?

    假设我有一个具有以下属性的对象 Person public class Person public int ID get set public int EmployeeNo get set public string JobDescript
  • 矢量::插入分段错误

    我有一堂这样的课 classA public classA Here I am doing something but nothing related to vector void updateVec int idx int value H
  • 水平对齐三张图像(只能将它们垂直对齐)

    我似乎真的缺少一些关于如何使用 CSS 在屏幕上的一个块中水平排列三个图像的信息 我似乎只能将它们在页面上排成一长行 当我真的希望它们以水平线穿过屏幕时 我的 div 哪里做错了 或者也许我在 CSS 中被引入歧途 有任何想法吗 太感谢了
  • 为什么在 C++ 中输入 void main() 不好 [重复]

    这个问题在这里已经有答案了 可能的重复 void main 和 int main 之间的区别 Why is void main return void bad 有一天 我输入了此内容 有人向我指出这样做是错误的 我很困惑 我这样写已经有一段
  • 如何在顶点着色器中使用计时器来为 OpenGL 中的点大小设置动画

    我正在尝试实现一个点云 其中不同点的大小应根据与其相关的不确定性值而变化 比方说 如果这个值为零 则大小应该是恒定的 如果它接近 1 则这些点的半径应该变化得越来越大 首先 点的大小应该增加 并且在达到最大值后 它们应该减小直到最小值 依此
  • C++-单例类

    单例类可以被继承吗 如果是 那我们该怎么办呢 编辑 我的意思是说 如果我们有一个使用单例设计模式的类 那么它可以被继承吗 单例有私有构造函数 因此继承是不可能的 除此之外 单例具有实例化私有实例成员的静态方法 并且由于您无法覆盖静态方法 因
  • Python 中带有键的 sort_values()

    我有一个数据框 其中列名称是时间 0 00 0 10 0 20 23 50 现在 它们按字符串顺序排序 因此 0 00 是第一个 9 50 是最后一个 但我想在时间之后对它们进行排序 所以 0 00 是第一个 23 50 是最后一个 If
  • 正则表达式捕获组 swift

    我在字符串中有一个正则表达式搜索方法 extension String func searchRegex regex String gt Array