正则表达式是用于创建模式的字符序列,该模式用于搜索和匹配字符串。
这些搜索模式在编程中用于检查给定字符串中是否存在模式或字符或字符串,以进行验证和检查。
在Scala中,使用r方法创建正则表达式(regex),该方法是Regex类的一种方法,该方法使用包scala.util.matching.Regex导入。
创建正则表达式的语法:
val regex = ""string".r
创建正则表达式的程序
object MyClass { def main(args: Array[String]) { var pattern = "@".r; println("Regular Expression :" + pattern) } }
输出:
Regular Expression : @
您可以检查字符串中是否存在正则表达式,并使用findAllIn方法,findFirstIn方法匹配模式。
检查字符串中是否存在正则表达式的程序
object MyClass { def main(args: Array[String]) { var pattern = "programming".r val string = "Hello! learn programming at inclduehelp.com" println((pattern findAllIn string).mkString(" ")) } }
输出:
Programming
在这里,我们使用了findAllIn方法来查找字符串中所有匹配的模式。该方法返回一个迭代器,因此要使用mkString方法将迭代器转换为字符串。
还有其他一些功能,例如findFirstIn,可用于在Scala中查找模式。
您还可以使用replaceFirstIn()和replaceAllIn()方法在Scala中替换字符串中找到的模式。
在Scala中,我们可以使用java创建语法创建自己的正则表达式。有一些元字符语法可用于创建正则表达式,
子表达 | 加工 |
---|---|
^ | 这用于将模式匹配到行的开头。 |
$ | 这用于将模式匹配到行尾。 |
. | 这用于匹配行中的单个字符,直到出现行尾。 |
[...] | 这用于匹配方括号内的字符。 |
[^ ...] | 用于匹配不在方括号内的字符 |
\\A | 它用于匹配字符串的开头。 |
\\ z | 它用于在字符串末尾进行匹配。 |
re* | 匹配出现频率为0或更高的字符。 示例:i *将检查'',i,ii,iii.。 |
re+ | 以1或多个频率匹配出现的字符。 示例:i +将检查i,ii,iii。 |
re? | 用0或1频率匹配出现的字符。 例如:我?将检查'',i。 |
re{n} | 用n个频率匹配字符的出现。 示例:i {3}将检查iii。 |
re{n,} | 以n个或多个频率匹配出现的字符。 示例:i {4,}将检查iiii,iiiii,iiiiii ... |
re {n,m} | 以n到m的频率匹配字符的出现。 示例:i {2,4}将检查ii,iii,iiii。 |
a | b | 它用于查找两个模式a或b之一的匹配项。 |
(re) | 它用于创建一组正则表达式,并记住字符串中所有匹配的部分。 |
(?:re) | 它用于创建一组正则表达式 |
(?>re) | 它用于创建独立的一组匹配表达式。 |
\\ w | 它用于匹配字符串中的单词字符。 |
\\ W | 它用于匹配字符串中的非单词字符。 |
\\ s | 它用于匹配字符串中的所有空格。 |
\\ S | 它用于匹配字符串中的所有非空格。 |
\\ d | 它用于匹配字符串中的数字(全0-9)。 |
\\ D | 它用于匹配字符串中的非数字。 |
\\G | 它用于匹配上次匹配结束的点。 |
\\ n | 向后引用捕获组号“ n”。 |
\\ Q | 它用于为字符创建转义符,直到遇到\\ E。 |
\\ E | 它结束使用\\ Q启动的转义。 |
现在,我们了解了用于在Scala中创建正则表达式的所有表达式。将此页面添加为书签,因为参考不是很容易记住,在Scala中使用字符串时,您需要将其参考回来。
让我们举几个例子,以使过程和上述表达式更清楚。
匹配10位数字-\\ d {10}
匹配有效的电子邮件地址-(@ [az] +。com)
在所有情况下的数学Scala-([Ss] cala(, )
?)+
匹配所有元音-[aeiouAEIOU]
匹配字符串中的非数字-[0-9]