正则表达式解释了一种用于匹配一系列输入数据的通用模式,因此它对许多编程语言中的模式匹配很有帮助。在Scala中,正则表达式通常被称为Scala Regex。
Regex是从scala.util.matching包中导入的类。正则表达式,它广泛应用于搜索和文本解析。为了将字符串转换为正则表达式,我们需要使用r()方法来处理指定的字符串。
例子
// Scala program for Regular
// Expressions
// Creating object
object GfG
{
// Main method
def main(args : Array[String])
{
// Applying r() method
val portal = "lsbin" .r
val CS = "lsbin is a CS portal."
// Displays the first match
println(portal findFirstIn CS)
}
}
输出如下:
Some(lsbin)
在这里, 我们已经调用了方法r()在陈述的字符串上获取一个实例正则表达式类, 以创建模式。方法findFirstIn()在上面的代码中使用来查找正则表达式的第一个匹配项。为了找到表达式中所有匹配的单词, 请使用findAllIn()方法。
范例:
// Scala program for Regular
// Expressions
import scala.util.matching.Regex
// Creating object
object GfG
{
// Main method
def main(args : Array[String])
{
// Applying Regex class
val x = new Regex( "Nidhi" )
val myself = "My name is Nidhi Singh."
// replaces first match with the
// String given below
println(x replaceFirstIn(myself, "Rahul" ))
}
}
输出如下:
My name is Rahul Singh.
我们甚至可以使用Regex的构造函数代替r()方法。这里, replaceFirstIn()方法用于替换指定字符串的第一个匹配项, 我们甚至可以使用替换所有匹配项replaceAllIn()方法。
范例:
// Scala program for Regular
// Expressions
import scala.util.matching.Regex
// Creating object
object GfG
{
// Main method
def main(args : Array[String])
{
// Applying Regex class
val Geeks = new Regex( "(G|g)fG" )
val y = "GfG is a CS portal. I like gfG"
// Displays all the matches separated
// by a separator
println((Geeks findAllIn y).mkString( ", " ))
}
}
输出如下:
GfG, gfG
在这里, 我们使用了mkString连接所有匹配项的方法, 用分隔符和管道分隔(|)在上面的代码中用于在给定的字符串中搜索大写和小写。因此, 此处返回指定字符串的大写和小写字母。
Scala正则表达式的语法
Java从Perl继承了一些功能, Scala从Java继承了Scala regex的语法。以下是元字符语法的列表:
子表达式 | 匹配 |
---|---|
^ | 它用于匹配行的起点。 |
$ | 用于匹配行的终点。 |
. | 它用于匹配除换行符以外的任何一个字符。 |
[…] | 它用于匹配方括号内的任何一个字符。 |
[^…] | 它用于匹配不在括号中的任何一个字符。 |
\\A | 它用于匹配完整字符串的起点。 |
\\z | 它用于匹配完整字符串的终止点。 |
\\Z | 它用于匹配除新行(如果存在)之外的整个字符串的结尾。 |
re* | 它用于匹配前述表达式的零个或多个外观。 |
re+ | 它用于匹配一个或多个上述表达式。 |
re? | 它用于匹配前述表达式的零个或一个外观。 |
re{n} | 它用于精确匹配上述表达式的n个外观。 |
re{n, } | 它用于匹配上述表达式的n个或更多个外观。 |
re{n, m} | 它用于匹配前述表达式的至少n个和最多m个外观。 |
q|r | 它用于匹配q或r。 |
(re) | 它用于对正则表达式进行分组并重新收集匹配的文本。 |
(?:re) | 它还会对正则表达式进行分组, 但不会重新收集匹配的文本。 |
(?>re) | 它用于在没有回溯的情况下匹配自力更生的模式。 |
\\w | 它用于匹配单词的字符。 |
\\W | 它用于匹配非单词的字符。 |
\\s | 它用于匹配类似于[\ t \ n \ r \ f]的空格。 |
\\S | 它用于匹配非空格。 |
\\d | 它用于匹配数字, 即[0-9]。 |
\\D | 它用于匹配非数字。 |
\\G | 它用于匹配最末端匹配结束的点。 |
\\n | 用于向后引用以占用组号n。 |
\\b | 当它在方括号中时, 它用于匹配单词frontiers, 而在方括号中时, 它用于匹配退格键。 |
\\B | 它用于匹配非单词边界。 |
\\n, \\t等 | 它用于匹配换行符, 制表符等。 |
\\Q | 它用于转义(引用)每个字符, 直到\\E。 |
\\E | 它用在以\\Q开头的结尾引用中。 |