首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大数据之脚踏实地学18--Scala正则表达式的使用

前言 《大数据之脚踏实地学17--Scala字符串的清洗》一文我们介绍了Scala语言中常用的字符串处理方法,但这些方法并不是万能的,例如字符串串的获取,如果目标串并不在固定的位置,此时切片即将无效...他们的区别如下: findFirstIn:查询出满足规律的第一个串; findAllIn:查询出满足规律的所有串; findAllMatchIn:与findAllIn类似,除此还可以配合()进行元素的获取...; 需要说明的是,使用正则表达式做字符串相关的处理时,可以通过如下两个方式构造正则表达式: pattern.r:即在字符串后面加上.r字符,这样原字符串便成了正则表达式; 导入scala.util.matching.Regex...("height:(\\d+)") // 利用for...yield将迭代对象的内容存储到Res变量 val Res = for(i <- pattern2.findAllMatchIn(S2))...举例 // 将字符串按照标点符号切割开 val S4 = "学习<em>Scala</em>,是一个漫长的过程。需要系统地学习,加油吧!兄弟。" val pattern4 = new Regex("[,。!]")

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

ES2018新特性学习

捕获就是把正则表达式匹配到的内容,保存到内存以数字编号或者显式命名的数组里,方便后面使用。...这种引用既可以正则表达式内部,也可以是正则表达式外部。 捕获有两种形式,一种是普通捕获,另一种是命名捕获。...而命名捕获就是为了解决这个问题。 命名捕获 ES2018 允许命名捕获可以使用 (?...) 语法给每个组起一个名字。 const regex = /(?...)/ 和 /\k/ 只有命名捕获才有意义。如果正则表达式没有命名捕获,那么 /\k/ 仅仅是字符串字面量 “k” 而已。...迭代器 Iterator ES6 引入迭代器来遍历数组,JavaScript 迭代器是一个对象,提供 next() 方法,用来返回序列的下一项,这个方法包含两个属性:done 和 value。

62210

python进阶(20) 正则表达式的超详细使用

为了解决此问题,可以引用反向引用,即让第二反向引用第一正则表达式反向引用语法是\编号,编号是从1开始的。...捕获分组的匹配子表达式结果被暂时保存到内存,以备表达式或其他程序引用,这个过程称为”捕获”,捕获结果可以通过编号或名进行引用。...但是有时并不想引用子表达式的匹配结果,不想捕获匹配结果,只是将小括号作为一个整体进行匹配,此时可以使用非捕获分组,开头使用?...捕获分组将括号的内容作为子表达式进行捕获匹配,将匹配的子表达式(即的内容)返回,结果是['.jpg','.jpg']。...match列表对象,如果匹配失败则返回None finditer():输入字符串查找所有匹配内容,如果匹配成功,则返回容纳match的可迭代对象,通过迭代对象每次可以返回一个match对象,如果匹配失败则返回

3.5K30

ES10新特性(一)

matches[0] 而不是 matches) “hello”搜索 "l" 只返回 "l"。...我们更详细地回答这个问题之前,让我们先来看看 捕获。如果不出意外,你可能会学到一些关于正则表达式的新知识。...正则表达式捕获 regex 捕获只是从 () 括号中提取一个模式,可以使用 /regex/.exec(string) 和string.match 捕捉。...常规捕获是通过将模式包装在 (pattern) 创建的,但是要在结果对象上创建 groups 属性,它是: (?pattern)。 要创建一个新的名,只需括号内附加 ?...使用 .matchAll() 的好理由 捕获一起使用时,它可以更加优雅,捕获只是使用 () 提取模式的正则表达式的一部分。 它返回一个迭代器而不是一个数组,迭代器本身是有用的。

98430

Scala 学习笔记之正则表达式

Regex对象 我们可以使用 scala.util.matching.Regex 类使用正则表达式.要构造一个 Regex 对象,使用 String 类的 r 方法即可: val numPattern...= """^[1-9]\d*$""" 如果在Java中使用上述正则表达式,则应该使用下面方式(需要进行转义): val positiveNumPattern = "^[1-9]\\d*$" 相对于Java...的使用方式,Scala这种写法可能更易读一些. 2. findAllIn findAllIn 方法返回遍历所有匹配项的迭代器.可以 for 循环中使用它: val str = "a b 27 c...numPattern = "[0-9]+".r for(matchingStr <- numPattern.findAllIn(str)){ println(matchingStr) } 或者将迭代器转成数组...正则表达式 分组可以让我们方便的获取正则表达式的子表达式.在你想要提取的子表达式两侧加上圆括号: val str = "3 a" val numPattern = "([0-9]+) ([a-z]+

71420

你应该学习正则表达式

本教程,我将尝试各种场景、语言和环境Regex的语法和使用进行简明易懂的介绍。 此Web应用程序是我用于构建、测试和调试Regex最喜欢的工具。...2.1 – 真实示例 – 时间分析 例如,在上述24小时模式,我们定义了两个捕获—— 时和分。 我们可以轻松地提取这些捕获。...3.0 – 捕获替换 通过使用捕获,我们可以动态地重组和转换我们的字符串输入。 引用捕获的标准方法是使用$或\符号,以及捕获的索引(请记住捕获元素是完整的捕获文本)。...6.1 – 真实示例 – 从Web页面上的URL解析域名 以下是我们如何使用命名捕获来提取使用Python语言的网页每个URL的域名。 ? 脚本将打印原始网页HTML内容中找到的每个域名。 ?...-E——使用扩展的Regex模式匹配 -i——原位替换文件流 's/^(.*?\s|)——将行的开头包装在捕获 [^@]+@[^\s]+——电子邮件Regex的简化版本。

5.3K20

通过小事例来重温 ES10 几个新特性

Array.flat() && Array.flatMap Array.flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的数组的元素合并为一个新数组返回。...解疑这个问题之前,先来看看 捕获。...正则表达式捕获 regex 捕获只是从 () 括号中提取一个模式,可以使用 /regex/.exec(string) 和string.match 捕捉。...常规捕获是通过将模式包装在 (pattern) 创建的,但是要在结果对象上创建 groups 属性,它是: (?pattern)。 要创建一个新的名,只需括号内附加 ?...使用 .matchAll() 的好理由 捕获一起使用时,它可以更加优雅,捕获只是使用 () 提取模式的正则表达式的一部分。 它返回一个迭代器而不是一个数组,迭代器本身是有用的。

90010

Java正则速成秘籍(二)之心法篇

分组构造 基本元字符章节,提到了 () 字符可以用来对表达式分组。实际上分组还有更多复杂的用法。 所谓分组构造,是用来描述正则表达式的子表达式,用于捕获字符串字符串。...:exp) 表示当一个限定符应用到一个,但捕获字符串并非所需时,通常会使用非捕获组构造。 例 匹配以.结束的语句。 // 匹配由句号终止的语句。...\b: 单词边界处结束匹配。 匹配后面跟的不是exp的位置 (?!exp) 表示输入字符串不得匹配子表达式的正则表达式模式,尽管匹配的字符串未包含在匹配结果。...\b: 单词边界处结束匹配。 匹配前面不是exp的位置 (?<!exp) 表示子表达式不得输入字符串当前位置的左侧出现。 但是,任何不匹配子表达式 的字符串不包含在匹配结果。...()的内容就是子表达式。 (?exp) 命名的子表达式(反向引用)。 (?:exp) 非捕获,表示当一个限定符应用到一个,但捕获字符串并非所需时,通常会使用非捕获组构造。 (?

2.2K100

C++ 与正则表达式

迭代器 在上文中,为了从字符串查找出所有匹配的字符,我们的做法是遍历原始字符串的每一个字符串来进行查找,这样做很明显效率很低。更好的做法当然是使用迭代器。...而是需要捕获匹配结果串。例如:我们不仅要匹配出日期,还要捕获日期中的年份,月份等信息。这个时候就要使用分组功能。 我们介绍正则表达式特殊字符的时候,提到过圆括号(和)。它们的作用就是分组。...++,分组叫做匹配(sub_match)。...并且,即便在字符内部,如果连字符是开头,它依然是一个普通字符而不是表示一个范围。 相反的,问号?和点号.不在字符内部的时候才是特殊字符。因此[?.]的这两个符号仅仅代表这两个字符自身。...还有,字符^出现在字符的时候表示的是否定,例如:[a-z]和[^a-z]表示的是正好相反的字符集。但是当字符^不是用在字符的时候,它是一个锚点[12],具体内容下文会说到。

2.6K20

Scala 字符串(十)

Scala ,字符串的类型实际上是 Java String,它本身没有 String 类。 Scala ,String 是一个不可变的对象,所以该对象不可被修改。...() ---- String 方法 下表列出了 java.lang.String 中常用的方法,你可以 Scala 中使用: 序号 方法及描述 1 char charAt(int index)返回指定位置的字符..., String replacement使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的字符串 31 String replaceFirst(String regex, String...replacement)使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个字符串 32 String[] split(String regex)根据给定正则表达式的匹配拆分此字符串...beginIndex)返回一个新的字符串,它是此字符串的一个字符串 38 String substring(int beginIndex, int endIndex)返回一个新字符串,它是此字符串的一个字符串

92620

正则表达式分组与捕获

例如,表达式(A)(B(C)) ,存在四个这样的: 0 (A)(B(C)) 1 (A) 2 (B(C)) 3 (C) 0始终代表整个表达式 之所以这样命名捕获是因为匹配...捕获序列稍后可以通过 Back 引用(反向引用) 表达式中使用,也可以匹配操作完成后从匹配器检索。...注意:反向引用,引用的是前面捕获的文本而不是正则,也就是说反向引用处匹配的文本应和前面捕获的文本相同,这一点很重要。...原因是捕获捕获的内容是被存储在内存,可供以后使用,比如反向引用就是引用的内存存储的捕获捕获的内容。而非捕获则不会捕获文本,也不会将它匹配到的内容单独分组来放到内存。...所以,使用非捕获较使用捕获更节省内存。实际情况我们要酌情选用。 分组使用 对正则表达式分组之后,就额可以通过Matcher 对象的group方法进行获取分组后匹配的值。

2.1K30
领券