Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests

Tools

Sponsors
There are currently no sponsors. Become a sponsor today!
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression
No Match

r"
"
gm

Test String

Code Generator

Generated Code

import Foundation let pattern = #"<img\s+[\S\"'= ]{0,40}src=[\"'](?P<src>(http(s)?:)?\/\/[^\":>]+)[\"']?"# let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines) let testString = ##""" <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="referrer" content="always" /> <title>博客园 - 代码改变世界</title> <meta name="keywords" content="开发者,博客园,开发者,程序猿,程序媛,极客,编程,代码,开源,IT网站,Developer,Programmer,Coder,Geek,技术社区" /> <meta name="description" content="博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。" /> <link rel="shortcut icon" href="//common.cnblogs.com/favicon.ico" type="image/x-icon" /> <link rel="Stylesheet" type="text/css" href="/bundles/aggsite.css?v=IlEZk4Ic2eCzcO6r0s4bGm62FAo8VZI-US_0EqUe2Bk1" /> <link id="RSSLink" title="RSS" type="application/rss+xml" rel="alternate" href="http://feed.cnblogs.com/blog/sitehome/rss" /> <script src="//common.cnblogs.com/scripts/jquery-2.2.0.min.js" type="text/javascript"></script> <script src="/bundles/aggsite.js?v=wbLJNoxRMOKXYku3zcNQAABkHSQLwHZ_hyKZv8KPN1Y1" type="text/javascript"></script> <script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script> <script> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; </script> <script> googletag.cmd.push(function () { googletag.defineSlot('/1090369/A1', [468, 60], 'div-gpt-ad-1547816814884-0').addService(googletag.pubads()); googletag.defineSlot('/1090369/B1', [300, 250], 'div-gpt-ad-1546331539224-0').addService(googletag.pubads()); googletag.defineSlot('/1090369/B2', [300, 250], 'div-gpt-ad-1539007469525-0').addService(googletag.pubads()); googletag.defineSlot('/1090369/B3', [300, 250], 'div-gpt-ad-1546331252242-0').addService(googletag.pubads()); googletag.defineSlot('/1090369/B4', [300, 250], 'div-gpt-ad-1546331385104-0').addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.enableServices(); }); </script> </head> <body> <div id="wrapper"> <div id="hd_info"> <div id="cnts"> <div id="site_nav_top">代码改变世界</div> <div id="login_area"><span id="span_userinfo"></span></div> <div class="clear"></div> </div> </div> <div id="header"> <p class="h_r_3"></p><p class="h_r_2"></p><p class="h_r_1"></p> <div id="header_block"> <div id="logo"> <h1> <a href="https://www.cnblogs.com/" title="开发者的网上家园"><img src="/images/logo_small.gif" alt="博客园Logo" width="142" height="55" /></a> </h1> </div> <div class="clear"></div> </div> <p class="h_r_1"></p><p class="h_r_2"></p><p class="h_r_3"></p> </div> <div id="nav_menu"><a href="https://home.cnblogs.com/">园子</a><a href="https://news.cnblogs.com">新闻</a><a href="https://q.cnblogs.com/">博问</a><a href="https://ing.cnblogs.com/">闪存</a><a href="https://group.cnblogs.com/">小组</a><a href="https://wz.cnblogs.com/">收藏</a><a href="https://job.cnblogs.com/">招聘</a><a href="https://edu.cnblogs.com/">班级</a><a href="http://zzk.cnblogs.com/">找找看</a></div> <div id="main"> <div class="post_nav_block_wrapper"> <ul class="post_nav_block"> <li><a href="/" class="current_nav" >首页</a></li> <li><a href="/pick/" title="编辑精选博文">精华</a></li> <li><a href="/candidate/" title="候选区的博文">候选</a></li> <li><a href="/news/" title="新闻频道最新新闻">新闻</a></li> <li><a href="/following" title="我关注博客的最新博文">关注</a></li> <li><a href="/aggsite/mycommented" title="我评论过的博文">我评</a></li> <li><a href="/aggsite/mydigged" title="我推荐过的博文">我赞</a></li> </ul> <div class="clear"></div> </div> <div class="rss_link" id="rss_block"> <span id="posts_refresh_tips"></span><a id="posts_refresh" href="#" class="refresh" title="刷新博文列表" onclick="aggSite.loadCategoryPostList();return false">刷新</a> <a href="http://feed.cnblogs.com/blog/sitehome/rss"><img src="//common.cnblogs.com/images/icon_rss.gif" alt="点击订阅" style="position:relative;top:2px;" title="订阅博客园文章" /></a> </div> <div id="headline_block" class="headline"><ul><li class="editor_pick"><a href="https://www.cnblogs.com/Zachary-Fan/p/bugwhy.html" id="editor_pick_lnk" target="_blank">【编辑推荐】为啥程序会有bug?<span id="editor_pick_count"></span></a> <a href="/aggsite/headline" title="查看更多编辑推荐" class="right_more">»</a></li><li><a href="https://www.cnblogs.com/51core/p/10613536.html" target="_blank" title="阅读1632, 评论14, 推荐27">[最多推荐]基于Asp.Net Core的简单社区项目源代码开源(14/1632)</a> <a href="/aggsite/topdigged24h" title="查看24小时推荐排行" class="right_more">»</a></li><li><a href="https://www.cnblogs.com/edison0621/p/10616738.html" target="_blank" title="阅读1192, 评论14, 推荐10">[最多评论]【春华秋实】.NET Core之只是多看了你一眼(14/1192)</a> <a href="/aggsite/topcommented24h" title="查看24小时评论排行" class="right_more">»</a></li><li><a href="https://news.cnblogs.com/n/622870/" target="_blank" title="阅读2627, 评论9, 推荐7">[新闻头条]硬核老奶奶:81岁自学编程 半年时间开发上架一款App(9/2627)</a> <a href="https://news.cnblogs.com/" title="查看更多新闻" class="right_more">»</a></li><li><a href="https://news.cnblogs.com/n/622930/" target="_blank" title="阅读809, 评论6, 推荐4">[推荐新闻]民营运载火箭发射再失败,“中国马斯克”之困(6/809)</a> <a href="https://news.cnblogs.com/n/recommend" title="查看更多推荐新闻" class="right_more">»</a></li></ul></div> <div id="pager_top" style="display:none"></div> <div id="post_list_tips" class="hide"></div> <div id="post_list"> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('xuelongqy',10619304,276495,1)"> <span class="diggnum" id="digg_count_10619304">0</span> </div> <div class="clear"></div> <div id="digg_tip_10619304" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/xuelongqy/p/10619304.html" target="_blank">Vue上拉加载下拉刷新---vue-easyrefresh</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/xuelongqy/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/801420/20151121115426.png" alt=""/></a> vue easyrefresh简介 正如名字一样,EasyRefresh很容易就能在基于Vue的Web应用上实现下拉刷新以及上拉加载操作,支持主流的PC和移动浏览器。它的功能灵感来源于与Android的SmartRefreshLayout,同样也吸取了很多三方库的优点。EasyRefresh中集成了 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/xuelongqy/" class="lightblue">青忆qingyi</a> 发布于 2019-03-29 09:40 <span class="article_comment"><a href="https://www.cnblogs.com/xuelongqy/p/10619304.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/xuelongqy/p/10619304.html" class="gray">阅读(0)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('gdjk',10619281,491238,1)"> <span class="diggnum" id="digg_count_10619281">0</span> </div> <div class="clear"></div> <div id="digg_tip_10619281" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/gdjk/p/10619281.html" target="_blank">龙岗一个月350的出租房,我搬出来了</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/gdjk/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1598575/20190201153602.png" alt=""/></a> 阅读本文大概需要 6 分钟。 阅读本文大概需要 6 分钟。 阅读本文大概需要 6 分钟。 阅读本文大概需要 6 分钟。 好久没写文章了,因为最近的实在是太忙了,看到这一期的征文,不禁让我回想起了当初刚毕业的那个自己,一时之间感慨万千。 我的故事 很多慕课网的老用户可能了解过我的故事,在16年的时候我 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/gdjk/" class="lightblue">LonelyKeyGuest</a> 发布于 2019-03-29 09:35 <span class="article_comment"><a href="https://www.cnblogs.com/gdjk/p/10619281.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/gdjk/p/10619281.html" class="gray">阅读(2)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('mfrank',10619263,320110,1)"> <span class="diggnum" id="digg_count_10619263">0</span> </div> <div class="clear"></div> <div id="digg_tip_10619263" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/mfrank/p/10619263.html" target="_blank">【效率工具】史上最好用的SSH一键登录脚本,超强更新!</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/mfrank/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1043143/20180825173331.png" alt=""/></a> 说明 虽然已经是凌晨,但丝毫不能掩盖我激动的心情,今天完成了对GotoSSH的一次大更新,新增了两个肥肠实用的功能,我只能说,是真的好用,话不多说,先来看效果图: 普通的一键登录: 一键登录跳板机,然后跳转登录线上服务器: 一键登录跳板机查看指定日志: 一键登录跳板机后跳转线上服务器查看指定日志: ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/mfrank/" class="lightblue">弗兰克的猫</a> 发布于 2019-03-29 09:32 <span class="article_comment"><a href="https://www.cnblogs.com/mfrank/p/10619263.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/mfrank/p/10619263.html" class="gray">阅读(18)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('liuhappy',10619261,424982,1)"> <span class="diggnum" id="digg_count_10619261">0</span> </div> <div class="clear"></div> <div id="digg_tip_10619261" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/liuhappy/p/10619261.html" target="_blank">从0开始的Python学习012数据结构&amp;对象与类</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/liuhappy/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1368764/20180502094746.png" alt=""/></a> 简介 数据结构是处理数据的结构,或者说,他们是用来存储一组相关数据的。 在Python中三种内建的数据结构--列表、元组和字典。学会了使用它们会使编程变得的简单。 列表 list是处理一组有序的数据结构,即你可以在一个列表中存储一个序列的项目。在Python每个项目之间用逗号分隔。列表中的项目应该包 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/liuhappy/" class="lightblue">Happy丶Liu</a> 发布于 2019-03-29 09:31 <span class="article_comment"><a href="https://www.cnblogs.com/liuhappy/p/10619261.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/liuhappy/p/10619261.html" class="gray">阅读(7)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('viyoung',10619158,472774,1)"> <span class="diggnum" id="digg_count_10619158">2</span> </div> <div class="clear"></div> <div id="digg_tip_10619158" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/viyoung/p/10619158.html" target="_blank">Spring Boot 2.x (十五):Dubbo + Zookeeper + 新版Dubbo Admin</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/viyoung/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1528535/20190118135212.png" alt=""/></a> Dubbo 简介 Dubbo是阿里巴巴公司开源的一个 高性能 优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成 。 它提供了三大核心能力: 面向接口 的远程方法调用 智能容错 和 负载均衡 服务 自动注册 和发现。 可以看出图中存在着五种角色 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/viyoung/" class="lightblue">Vi的技术博客</a> 发布于 2019-03-29 09:15 <span class="article_comment"><a href="https://www.cnblogs.com/viyoung/p/10619158.html#commentform" title="2019-03-29 09:24" class="gray"> 评论(2)</a></span><span class="article_view"><a href="https://www.cnblogs.com/viyoung/p/10619158.html" class="gray">阅读(81)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('suihang',10610519,450240,1)"> <span class="diggnum" id="digg_count_10610519">0</span> </div> <div class="clear"></div> <div id="digg_tip_10610519" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/suihang/p/10610519.html" target="_blank">TS学习随笔(三)-&gt;接口</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/suihang/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1459059/20180806183429.png" alt=""/></a> 终于来到了比较重要的知识,接口,有多重要呢,反正是很重要好啵 在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。 那什么是接口呢,在面向对象语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类(classes)去实现(im ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/suihang/" class="lightblue">一只菜鸟攻城狮啊</a> 发布于 2019-03-29 08:54 <span class="article_comment"><a href="https://www.cnblogs.com/suihang/p/10610519.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/suihang/p/10610519.html" class="gray">阅读(69)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('yunen',10619061,328097,1)"> <span class="diggnum" id="digg_count_10619061">0</span> </div> <div class="clear"></div> <div id="digg_tip_10619061" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/yunen/p/10619061.html" target="_blank">关于CSRF的那点事儿</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/yunen/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1095571/20190324162056.png" alt=""/></a> 0x01 CSRF简介 & 160;& 160;& 160;& 160;CSRF,也称XSRF,即跨站请求伪造攻击,与XSS相似,但与XSS相比更难防范,是一种广泛存在于网站中的安全漏洞,经常与XSS一起配合攻击。 &lt;! more 0x02 CSRF原理 & 160;& 160;& 160;& 16 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/yunen/" class="lightblue">Yunen的博客</a> 发布于 2019-03-29 08:47 <span class="article_comment"><a href="https://www.cnblogs.com/yunen/p/10619061.html#commentform" title="2019-03-29 08:58" class="gray"> 评论(1)</a></span><span class="article_view"><a href="https://www.cnblogs.com/yunen/p/10619061.html" class="gray">阅读(89)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('pig66',10618035,494280,1)"> <span class="diggnum" id="digg_count_10618035">1</span> </div> <div class="clear"></div> <div id="digg_tip_10618035" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/pig66/p/10618035.html" target="_blank">Python一行代码实现快速排序</a></h3> <p class="post_item_summary"> 上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插入、希尔、归并),因为快速排序的重要性,所以今天将单独为大家介绍一下快速排序! 上期文章排序算法——(2)Python实现十大常用排序算法为大家介绍了十大常用排序算法的前五种(冒泡、选择、插 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/pig66/" class="lightblue">猪哥66</a> 发布于 2019-03-29 08:38 <span class="article_comment"><a href="https://www.cnblogs.com/pig66/p/10618035.html#commentform" title="2019-03-29 09:17" class="gray"> 评论(2)</a></span><span class="article_view"><a href="https://www.cnblogs.com/pig66/p/10618035.html" class="gray">阅读(94)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('joy99',10618910,228233,1)"> <span class="diggnum" id="digg_count_10618910">0</span> </div> <div class="clear"></div> <div id="digg_tip_10618910" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/joy99/p/10618910.html" target="_blank">java 并发——理解 wait / notify / notifyAll</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/joy99/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/758949/20160701123459.png" alt=""/></a> 一、前言 前情简介: "java 并发——内置锁" "java 并发——线程" java 面试是否有被问到过, 和 方法的区别,关于这个问题其实不用多说,大多数人都能回答出最主要的两点区别: sleep 是线程的方法, wait / notify / notifyAll 是 Object 类的方法; ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/joy99/" class="lightblue">SharpCJ</a> 发布于 2019-03-29 08:29 <span class="article_comment"><a href="https://www.cnblogs.com/joy99/p/10618910.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/joy99/p/10618910.html" class="gray">阅读(98)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('leisure_chn',10584948,445983,1)"> <span class="diggnum" id="digg_count_10584948">0</span> </div> <div class="clear"></div> <div id="digg_tip_10584948" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/leisure_chn/p/10584948.html" target="_blank">FFmpeg编解码处理4-音频编码</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/leisure_chn/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1446952/20190122100937.png" alt=""/></a> 本文为作者原创,转载请注明出处: FFmpeg编解码处理系列笔记: "0]. [FFmpeg时间戳详解" "1]. [FFmpeg编解码处理1 转码全流程简介" "2]. [FFmpeg编解码处理2 编解码API详解" "3]. [FFmpeg编解码处理3 视频编码" "4]. [FFmpeg编解码 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/leisure_chn/" class="lightblue">叶余</a> 发布于 2019-03-29 08:29 <span class="article_comment"><a href="https://www.cnblogs.com/leisure_chn/p/10584948.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/leisure_chn/p/10584948.html" class="gray">阅读(50)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('xiangyuecn',10618982,142281,1)"> <span class="diggnum" id="digg_count_10618982">1</span> </div> <div class="clear"></div> <div id="digg_tip_10618982" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/xiangyuecn/p/10618982.html" target="_blank">Fiddler抓包和修改WebSocket数据,支持wss</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/xiangyuecn/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/463618/20181111205015.png" alt=""/></a> 记录一下用 对`WebSocket`收发的数据进行抓包分析和篡改数据,只找到这么一个方法,能用就行吧。 时间:2019 3 29 环境: `+ Fiddler 5.0` Fiddler抓取WebSocket数据 中双击 即可查看此连接收发的数据。可惜此选项卡内没有带发送数据的功能(一个输入框(HEX ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/xiangyuecn/" class="lightblue">xiangyuecn</a> 发布于 2019-03-29 07:41 <span class="article_comment"><a href="https://www.cnblogs.com/xiangyuecn/p/10618982.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/xiangyuecn/p/10618982.html" class="gray">阅读(350)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('moonhmily',10618975,190911,1)"> <span class="diggnum" id="digg_count_10618975">0</span> </div> <div class="clear"></div> <div id="digg_tip_10618975" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/moonhmily/p/10618975.html" target="_blank">上次被人说TK不好咯,这次给你整个高大上的</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/moonhmily/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/649191/20190227122307.png" alt=""/></a> 想要熟练使用PyQt,还是需要深入研究下这个库的使用,笔者这里只是抛砖引玉。 关注公众号「**Python专栏**」,后台回复:**zsxq06**,获取本文全套代码。 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/moonhmily/" class="lightblue">上海小胖</a> 发布于 2019-03-29 06:55 <span class="article_comment"><a href="https://www.cnblogs.com/moonhmily/p/10618975.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/moonhmily/p/10618975.html" class="gray">阅读(118)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('minotauros',10618913,460575,1)"> <span class="diggnum" id="digg_count_10618913">2</span> </div> <div class="clear"></div> <div id="digg_tip_10618913" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/minotauros/p/10618913.html" target="_blank">C#闭包</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/minotauros/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/839833/20180914114621.png" alt=""/></a> 1.匿名方法和Lambda表达式中可以访问到声明该匿名方法或Lambda表达式所在方法中的参数或局部变量,这些变量称为外部变量(Outer Variable),外部变量的生命周期会持续到引用匿名方法或Lambda表达式的委托实例被垃圾回收器回收为止: 2.调用匿名方法或Lambda表达式时,访问到的 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/minotauros/" class="lightblue">Minotauros</a> 发布于 2019-03-29 02:08 <span class="article_comment"><a href="https://www.cnblogs.com/minotauros/p/10618913.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/minotauros/p/10618913.html" class="gray">阅读(199)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('idiotgroup',10618891,155885,1)"> <span class="diggnum" id="digg_count_10618891">1</span> </div> <div class="clear"></div> <div id="digg_tip_10618891" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/idiotgroup/p/10618891.html" target="_blank">TICTOC: Header Only C++ Timer</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/idiotgroup/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/542753/20160505183004.png" alt=""/></a> Header Only C++ Timer,简易实用的C++计时器,本文的重点在于项目中用到的C++编程的知识(单例、宏、名字空间等,我也不知道为啥这个功能需要这么多技术,但确实都是要用到的),以及安利一下自己编写的库。欢迎大家star和mr。感恩~ ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/idiotgroup/" class="lightblue">喵耳朵</a> 发布于 2019-03-29 01:32 <span class="article_comment"><a href="https://www.cnblogs.com/idiotgroup/p/10618891.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/idiotgroup/p/10618891.html" class="gray">阅读(43)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('sanchang',10614074,441986,1)"> <span class="diggnum" id="digg_count_10614074">0</span> </div> <div class="clear"></div> <div id="digg_tip_10614074" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/sanchang/p/10614074.html" target="_blank">React 精要面试题讲解(五) 高阶组件真解</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/sanchang/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1425733/20180620223626.png" alt=""/></a> 高阶组件存在组合(也可称之为代理)和继承两种形式,学习本章内容,让你彻底消化React高阶组件。 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/sanchang/" class="lightblue">散场丶丶</a> 发布于 2019-03-29 01:15 <span class="article_comment"><a href="https://www.cnblogs.com/sanchang/p/10614074.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/sanchang/p/10614074.html" class="gray">阅读(60)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('phpstudy2015-6',10618707,258167,1)"> <span class="diggnum" id="digg_count_10618707">0</span> </div> <div class="clear"></div> <div id="digg_tip_10618707" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/phpstudy2015-6/p/10618707.html" target="_blank">Java 集合系列(二)—— ArrayList</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/phpstudy2015-6/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/789055/20161204181900.png" alt=""/></a> ArrayList ArrayList 是通过一个数组来实现的,因此它是在连续的存储位置存放对象的引用,只不过它比 Array 更智能,能够根据集合长度进行自动扩容。 假设让我们来实现一个简单的能够自动扩容的数组,我们最容易想到的点就是: 实际上,ArrayList的内部实现原理也是这样子,我们可以 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/phpstudy2015-6/" class="lightblue">那一叶随风</a> 发布于 2019-03-29 00:20 <span class="article_comment"><a href="https://www.cnblogs.com/phpstudy2015-6/p/10618707.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/phpstudy2015-6/p/10618707.html" class="gray">阅读(105)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('xiexj',10618714,334942,1)"> <span class="diggnum" id="digg_count_10618714">0</span> </div> <div class="clear"></div> <div id="digg_tip_10618714" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/xiexj/p/10618714.html" target="_blank">Kubernetes的DaemonSet(下篇)</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/xiexj/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1112728/20180420145036.png" alt=""/></a> 用Daemon Pod来进行通信 使用Pod来再DaemonSet中通信的手段有: 推的方式:在DaemonSet中的Pod会被配置成发送更新到如状态数据库这样的服务。这些都没有客户端。 IP+端口方式:DaemonSet中的Pod可以使用主机端口。因此通过node的IP就可以访问。客户端知道了no ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/xiexj/" class="lightblue">编程一生</a> 发布于 2019-03-29 00:07 <span class="article_comment"><a href="https://www.cnblogs.com/xiexj/p/10618714.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/xiexj/p/10618714.html" class="gray">阅读(39)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('jyzhao',10618658,186567,1)"> <span class="diggnum" id="digg_count_10618658">0</span> </div> <div class="clear"></div> <div id="digg_tip_10618658" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/jyzhao/p/10618658.html" target="_blank">Oracle 10g RAC OCR、Voting disk更换</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/jyzhao/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/635610/20160310163558.png" alt=""/></a> 环境: OEL 5.7 + Oracle 10.2.0.5 RAC 需求: 更换存储,OCR、Voting disk同时需要更换到新存储。 "1.替换OCR" "2.替换voting disk" 1.替换OCR 替换OCR(Oracle Cluster Registry)首先需要关闭RAC所有节点的 ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/jyzhao/" class="lightblue">AlfredZhao</a> 发布于 2019-03-28 23:55 <span class="article_comment"><a href="https://www.cnblogs.com/jyzhao/p/10618658.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/jyzhao/p/10618658.html" class="gray">阅读(44)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('lart',10618665,327824,1)"> <span class="diggnum" id="digg_count_10618665">0</span> </div> <div class="clear"></div> <div id="digg_tip_10618665" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/lart/p/10618665.html" target="_blank">生产与学术之Pytorch模型导出为安卓Apk尝试记录</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/lart/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/1094855/20170112224706.png" alt=""/></a> 生产与学术 写于 2019 01 08 的旧文, 当时是针对一个比赛的探索. 觉得可能对其他人有用, 就放出来分享一下 生产与学术, 真实的对立... 这是我这两天对 的这个流程的一个切身感受. 说句实在的, 对于模型转换的探索, 算是我这两天最大的收获了... 全部浓缩在了这里: 鉴于github ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/lart/" class="lightblue">lart</a> 发布于 2019-03-28 23:53 <span class="article_comment"><a href="https://www.cnblogs.com/lart/p/10618665.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/lart/p/10618665.html" class="gray">阅读(35)</a></span></div> </div> <div class="clear"></div> </div> <div class="post_item"> <div class="digg"> <div class="diggit" onclick="DiggPost('Wayou',10618645,123544,1)"> <span class="diggnum" id="digg_count_10618645">0</span> </div> <div class="clear"></div> <div id="digg_tip_10618645" class="digg_tip"></div> </div> <div class="post_item_body"> <h3><a class="titlelnk" href="https://www.cnblogs.com/Wayou/p/type_alias_vs_interface.html" target="_blank">TypeScript: type alias 与 interface</a></h3> <p class="post_item_summary"> <a href="https://www.cnblogs.com/Wayou/" target="_blank"><img width="48" height="48" class="pfs" src="//pic.cnblogs.com/face/431064/20140914104240.png" alt=""/></a> 官方文档中有关于两者对比的信息,隐藏在 TypeScript Handbook 中,见 Interfaces vs. Type Aliases 部分。 但因为这一部分很久没更新了,所以其中描述的内容不一定全对。 比如, 区别点之一:Type Alias 不会创建新的类型,体现在错误信息上。 One ... </p> <div class="post_item_foot"> <a href="https://www.cnblogs.com/Wayou/" class="lightblue">刘哇勇</a> 发布于 2019-03-28 23:45 <span class="article_comment"><a href="https://www.cnblogs.com/Wayou/p/type_alias_vs_interface.html#commentform" title="" class="gray"> 评论(0)</a></span><span class="article_view"><a href="https://www.cnblogs.com/Wayou/p/type_alias_vs_interface.html" class="gray">阅读(39)</a></span></div> </div> <div class="clear"></div> </div> </div> <script>editorPickStat(); aggSite.user.getUserInfo();</script> <script type="text/javascript"> var aggSiteModel = {"CategoryType":"SiteHome","ParentCategoryId":0,"CategoryId":808,"PageIndex":1,"TotalPostCount":4000,"ItemListActionName":"PostList"}; </script> <div id="pager_bottom"><div id="paging_block"><div class="pager"><a href="/" class="p_1 current" onclick="aggSite.loadCategoryPostList(1,20);buildPaging(1);return false;">1</a><a href="/sitehome/p/2" class="p_2 middle" onclick="aggSite.loadCategoryPostList(2,20);buildPaging(2);return false;">2</a><a href="/sitehome/p/3" class="p_3 middle" onclick="aggSite.loadCategoryPostList(3,20);buildPaging(3);return false;">3</a><a href="/sitehome/p/4" class="p_4 middle" onclick="aggSite.loadCategoryPostList(4,20);buildPaging(4);return false;">4</a><a href="/sitehome/p/5" class="p_5 middle" onclick="aggSite.loadCategoryPostList(5,20);buildPaging(5);return false;">5</a><a href="/sitehome/p/6" class="p_6 middle" onclick="aggSite.loadCategoryPostList(6,20);buildPaging(6);return false;">6</a><a href="/sitehome/p/7" class="p_7 middle" onclick="aggSite.loadCategoryPostList(7,20);buildPaging(7);return false;">7</a><a href="/sitehome/p/8" class="p_8 middle" onclick="aggSite.loadCategoryPostList(8,20);buildPaging(8);return false;">8</a><a href="/sitehome/p/9" class="p_9 middle" onclick="aggSite.loadCategoryPostList(9,20);buildPaging(9);return false;">9</a><a href="/sitehome/p/10" class="p_10 middle" onclick="aggSite.loadCategoryPostList(10,20);buildPaging(10);return false;">10</a><a href="/sitehome/p/11" class="p_11 middle" onclick="aggSite.loadCategoryPostList(11,20);buildPaging(11);return false;">11</a><span class="ellipsis">···</span><a href="/sitehome/p/200" class="p_200 last" onclick="aggSite.loadCategoryPostList(200,20);buildPaging(200);return false;">200</a><a href="/sitehome/p/2" onclick="aggSite.loadCategoryPostList(2,20);buildPaging(2);return false;">Next &gt;</a></div></div><script type="text/javascript">var pagingBuider={"OnlyLinkText":false,"TotalCount":4000,"PageIndex":1,"PageSize":20,"ShowPageCount":5,"SkipCount":0,"UrlFormat":"/sitehome/p/{0}","OnlickJsFunc":"aggSite.loadCategoryPostList()","FirstPageLink":"/","AjaxUrl":"/mvc/ToolkitPaging/load.aspx","AjaxCallbak":null,"TopPagerId":"pager_top","IsRenderScript":true};function buildPaging(pageIndex){pagingBuider.PageIndex=pageIndex;$.ajax({url:pagingBuider.AjaxUrl,data:JSON.stringify(pagingBuider),type:'post',dataType:'text',contentType:'application/json; charset=utf-8',success:function (data) { $('#paging_block').html(data); var pagerTop=$('#pager_top');if(pageIndex>1){$(pagerTop).html(data).show();}else{$(pagerTop).hide();}}});}</script> </div> <div id="side_nav"> <div id="cate_title_block"> <div id="cate_title_title"><div class="cate_title">网站分类</div></div> <ul id="cate_item"> <li id="cate_item_108698" onmouseover="cateShow(108698)" onmouseout="cateHidden(108698)"> <a href="/cate/108698/">.NET技术(4)</a> </li> <li id="cate_item_2" onmouseover="cateShow(2)" onmouseout="cateHidden(2)"> <a href="/cate/2/">编程语言(8)</a> </li> <li id="cate_item_108701" onmouseover="cateShow(108701)" onmouseout="cateHidden(108701)"> <a href="/cate/108701/">软件设计(2)</a> </li> <li id="cate_item_108703" onmouseover="cateShow(108703)" onmouseout="cateHidden(108703)"> <a href="/cate/108703/">Web前端(2)</a> </li> <li id="cate_item_108704" onmouseover="cateShow(108704)" onmouseout="cateHidden(108704)"> <a href="/cate/108704/">企业信息化(2)</a> </li> <li id="cate_item_108705" onmouseover="cateShow(108705)" onmouseout="cateHidden(108705)"> <a href="/cate/108705/">手机开发(3)</a> </li> <li id="cate_item_108709" onmouseover="cateShow(108709)" onmouseout="cateHidden(108709)"> <a href="/cate/108709/">软件工程(3)</a> </li> <li id="cate_item_108712" onmouseover="cateShow(108712)" onmouseout="cateHidden(108712)"> <a href="/cate/108712/">数据库技术(1)</a> </li> <li id="cate_item_108724" onmouseover="cateShow(108724)" onmouseout="cateHidden(108724)"> <a href="/cate/108724/">操作系统(5)</a> </li> <li id="cate_item_4" onmouseover="cateShow(4)" onmouseout="cateHidden(4)"> <a href="/cate/4/">其他分类(20)</a> </li> <li id="cate_item_0" onmouseover="cateShow(0)" onmouseout="cateHidden(0)"> <a href="/cate/all/">所有随笔(161)</a> </li> <li id="cate_item_-1" onmouseover="cateShow(-1)" onmouseout="cateHidden(-1)"> <a href="/comment/">所有评论(44)</a> </li> </ul> <div class="cate_bottom"></div> <div id="cate_sub_block"></div> <script type="text/javascript">var cateIdList = '108698,2,108701,108703,108704,108705,108709,108712,108724,4';aggSite.loadSubCategories();</script> </div> <div class="l_s"></div> <p class="r_l_3"></p><p class="r_l_2"></p><p class="r_l_1"></p> <div class="w_l"> <h4>链接</h4> <ul> <li><a href="https://group.cnblogs.com/forum/public/" target="_blank">反馈或建议</a></li> <li><a href="//www.cnblogs.com/cmt/" target="_blank">官方博客</a></li> <li><a href="/skins.aspx" target="_blank">博客模板</a></li> <li><a href="http://www.blogjava.net/">Java博客</a></li> <li><a href="http://www.cppblog.com/">C++博客</a></li> <li><a href="//www.cnblogs.com/cmt/archive/2009/09/26/1574616.html">手机版</a></li> </ul> </div> <p class="r_l_1"></p><p class="r_l_2"></p><p class="r_l_3"></p> <div class="l_s"></div> <div id="user_stats"></div> <div class="l_s"></div> <p class="r_l_3"></p><p class="r_l_2"></p><p class="r_l_1"></p> <div class="w_l"> <h4>统计信息</h4> <div id="site_stats"></div> </div> <p class="r_l_1"></p><p class="r_l_2"></p><p class="r_l_3"></p> </div> <div id="side_right"> <div id="search_block"> <div class="side_search"> <input type="text" id="zzk_q" class="search_input" onkeydown="return zzk_go_enter(event);" tabindex="3" /><input onclick="zzk_go()" type="button" class="search_btn" value="找找看" /> </div> <div id="google_search" class="side_search"> <input type="text" id="google_search_q" class="search_input" onkeydown="return google_search_enter(event);" /><input type="button" value="Google" class="search_btn" onclick="return google_search();" /> </div> </div> <div id="cnblogs_a1"> <div id='div-gpt-ad-1547816814884-0' style='height:60px; width:468px;'> <script> googletag.cmd.push(function () { googletag.display('div-gpt-ad-1547816814884-0'); }); </script> </div> </div> <div id="cnblogs_b1" class="sidebar-image"> <div id='div-gpt-ad-1546331539224-0' style='height:250px; width:300px;'> <script> googletag.cmd.push(function () { googletag.display('div-gpt-ad-1546331539224-0'); }); </script> </div> </div> <div id="ad_right_text" class="ad_right_text"></div> <div id="side_right_block"></div> </div> </div> <div id="footer"> <div class="footer_block"> <p class="r_b_3"></p><p class="r_b_2"></p><p class="r_b_1"></p><div id="friend_link"> 友情链接:<a href="https://www.aliyun.com" target="_blank">阿里云</a><a href="https://cloud.tencent.com/?fromSource=gwzcw.541531.541531.541531" target="_blank">腾讯云</a><a href="https://www.163yun.com" target="_blank">网易云</a><a href="https://cloud.baidu.com" target="_blank">百度云</a><a href="https://www.jdcloud.com" target="_blank">京东云</a><a href="http://www.hujiang.com" target="_blank">沪江网</a><a href="http://www.chinaz.com/" target="_blank">站长之家</a><a href="http://dev.yesky.com" target="_blank">天极网</a><a href="http://down.admin5.com" target="_blank">A5源码下载</a><a href="http://www.gcpowertools.com.cn" target="_blank">葡萄城控件</a><a href="https://www.upyun.com/?md=cnblogs" target="_blank">又拍云</a><a href="http://zt.cnblogs.com/tingyun/" target="_blank">听云APP</a><a href="http://www.hightopo.com/cn-index.html" target="_blank">图扑软件</a><a href="http://www.cnblogs.com/mipengine/" target="_blank">百度MIP博客</a><a href="http://wetest.qq.com/?from=links_cnblogs" target="_blank">腾讯WeTest</a><a href="http://yaq.qq.com/" target="_blank">腾讯御安全</a><a href="http://www.ucancode.com/index.html" target="_blank">工控组态源码</a><a href="https://163yun.cnblogs.com/" target="_blank">网易云博客</a><a href="https://www.qiniu.com/" target="_blank">七牛云</a><a href="https://www.huanpingge.com/" target="_blank">换屏哥手机维修</a> </div><p class="r_b_1"></p><p class="r_b_2"></p><p class="r_b_3"></p> </div> </div> <div id="footer_bottom"> <div><a href="https://about.cnblogs.com/">关于博客园</a><a href="https://about.cnblogs.com/contact">联系我们</a><a href="https://about.cnblogs.com/ad">广告服务</a>&copy;2004-2019<a href="http://www.cnblogs.com/">博客园</a>保留所有权利<a href="http://www.miitbeian.gov.cn" target="_blank">沪ICP备09004260号</a></div> <div><a href="https://ss.knet.cn/verifyseal.dll?sn=e131108110100433392itm000000&amp;ct=df&amp;a=1&amp;pa=0.25787803245785335" rel="nofollow" target="_blank"><img id="cnnic_img" src="//common.cnblogs.com/images/cnnic.png" alt="" width="64" height="23" /></a><a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31011502001144" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"><img src="//common.cnblogs.com/images/ghs.png" alt="" /><img id="cnnic_img" src="//common.cnblogs.com/images/cnnic.png" alt="" width="64" height="23" /></a><a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31011502001144" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"><img src="//common.cnblogs.com/images/ghs.png" alt="" /><span style="float:left;height:20px;line-height:20px;margin: 0 5px 0 5px; color:#939393;">沪公网安备 31011502001144号</span></a></div> </div> </div> </body> </html> """## let stringRange = NSRange(location: 0, length: testString.utf16.count) let matches = regex.matches(in: testString, range: stringRange) var result: [[String]] = [] for match in matches { var groups: [String] = [] for rangeIndex in 1 ..< match.numberOfRanges { let nsRange = match.range(at: rangeIndex) guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue } let string = (testString as NSString).substring(with: nsRange) groups.append(string) } if !groups.isEmpty { result.append(groups) } } print(result)

Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression