Groovy Tip 16 正则表达式 一
在Groovy语言中,增加了正则表达式的匹配运算符“==~”。一个简单的例子如下:
println"friends" ==~ /friends/
打印结果为:true
可以看到,在Groovy语言中,正则表达式的匹配运算非常简单。麻烦的是一些通配符需要记住,然后加以灵活运用。如下:
a? 表示一个或零个a
a* 表示零个或n个a(零个或以上)
a+ 表示n个a(1个或以上)
a{n} 表示n个a(如,a{3}表示3个a,即aaa)
a|b 表示a或b
[abcd] 表示a或b或c或d,相当于a|b|c|d
[a-z] 表示a到z之间的任意一个,同理[A-Z]是A到Z之间的任意一个
^a 表示非a
() 表示一个正则表达式,如(ab)匹配ab
. 表示任意一个字符
以上是比较常用的一些通配符,有了上面的一些基础知识,才能做正则运算,下面试举出一些例子。
比如,我们要匹配一个数字,如:
def str = '1000.31'
首先我们要匹配小数点以前的整数位,数字的正则表达式为/[0-9]/,这表示一个数字位,那么多位数的整数的正则表达式为:/[0-9]+/,“+”表示一个以上,见上面的说明。
接着要匹配小数点,值得注意的是“.”本身是一个通配符,所以要用转义符来表示,即\.表示小数点。再来匹配小数点后的数字,同样是/[0-9]+/。
所以匹配小数点以及小数位就是/\.[0-9]+/。
因为小数位可以有,也可以没有,没有则是一个整数,所以小数位的正则表达式为/(\.[0-9]+)?/,“?”表示“(\.[0-9]+)”有零个或一个。
所以数字的正则表达式为:
def re = /[0-9]+(\.[0-9]+)?/
我们来测试一下:
println str ==~ re
结果为:true
同理,我们可以分析一个邮箱的正则表达式:
def str = 'fxx12_ee@sina.com'
def re = /[a-zA-Z][^@\.]+@[^@\.]+\.[^@\.]+/
println str ==~ re
邮箱以字母开头,所以re以/[a-zA-Z]/开头;接着是非@非“.”的任意字符,即/[^@\.]+/;然后是@;把上面的正则连接起来为:/[a-zA-Z][^@ \.]+@/。
然后是非@的任意字符,即/[^@\.]+/;接着是.;最后又是非@非“.”的任意字符。
所以将上面的分析连接起来,为/[a-zA-Z][^@\.]+@[^@\.]+\.[^@\.]+/
现在,我们来匹配一个手机号码:
def str = '13640901345'
def re = /13[0-9]{9}/
println str ==~ re
即以13开头,后面连续9个数字。
现在,我们来匹配新浪或搜狐的邮箱:
def str = 'fxxfg_001@sohu.com'
def re = /[a-zA-Z][^@\.]+@((sina.com)|(sohu.com))/
println str ==~ re
结果为:true
def str = 'fxxfg_001@sina.com'
def re = /[a-zA-Z][^@\.]+@((sina.com)|(sohu.com))/
println str ==~ re
结果也为:true
def str = 'fxxfg_001@163.com'
def re = /[a-zA-Z][^@\.]+@((sina.com)|(sohu.com))/
println str ==~ re
结果就是:false。
分享到:
相关推荐
【Groovy正则表达式基础1】 Groovy是一种基于Java平台的动态编程语言,它扩展了Java的功能,包括对正则表达式的处理。在Groovy中,正则表达式是通过`~`运算符或者使用斜杠(`/`)来定义的。这种特性使得Groovy在处理...
在Groovy中,可以使用`=~`运算符将字符串与正则表达式进行匹配,返回一个匹配结果的Matcher对象。例如: ```groovy def text = 'Hello, Groovy!' def matchResult = text =~ /Groovy/i // 使用/i忽略大小写 if ...
早期我用c#开发了一个正则表达式工具,而现在这个版本是我用java实现的。 众所周知,java在桌面应用方面一直是短板,c#则有着天然的优势。然作为一个java开发人员,采用java的编程思想来实现此功能还是很有必要的。
Groovy作为一种灵活的脚本语言,在处理文本时尤其强大,它内置了对正则表达式的良好支持。本文将详细介绍Groovy中的正则表达式语法及其应用场景。 #### 二、基本符号及含义 Groovy中的正则表达式遵循标准的正则...
#### 一、Groovy正则表达式的定义与使用 在Groovy中,正则表达式(Regular Expression)是一种强大的工具,用于处理文本中的模式匹配、查找、替换等操作。Groovy支持多种方式定义正则表达式,包括通过双斜线`//`、...
1. **正则表达式基础** 正则表达式(Regular Expression)是由字符和特殊符号组成的模式,用于描述字符串的某种模式。例如,`\d{3}-\d{4}`可以匹配美国电话号码格式。在Groovy中,你可以直接使用Java的正则表达式...
本文将详细介绍如何通过正则表达式快速地完成这一系列更新操作。 #### 一、本地属性文件(local.properties) `local.properties`文件用于保存项目的本地属性设置,如SDK路径等。在升级过程中,通常需要确认该文件中...
本教程主要参考自网上最普遍的《正则表达式30分钟入门教程》(http://deerchao.net/tutorials/regex/regex.htm),这是一个非常优秀的教程,深入浅出讲解了正则表达式的基本概念,更加深入的内容可以参考CSDN上过客...
1. **创建正则表达式**:通过直观的界面,用户可以构建复杂的正则模式,软件会提供实时反馈,帮助用户理解每个部分的功能。 2. **测试与调试**:输入样本文本,RegexBuddy将高亮显示匹配的部分,同时显示匹配过程,...
了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,...
一、Groovy表达式概述 Groovy表达式可以是简单的值,如数字或字符串,也可以是复杂的运算组合。它们可以在行内直接执行,无需使用分号作为语句结束符。例如: ```groovy def a = 5 def b = "Hello" ``` 二、算术...
了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,...
17. **运算符**:Groovy支持多种运算符,如算术运算符、条件运算符、字符串运算符、正则表达式运算符、集合运算符和对象运算符等。运算符重载、位运算符和复合赋值运算符也是重点。 18. **赋值运算符**:Groovy的...
- **正则表达式**: Groovy内置了强大的正则表达式支持。 通过以上内容的学习,读者将能够了解Groovy的基本概念、主要特性和开发环境设置方法,同时也能掌握Groovy的基本语法和一些进阶技巧。这些知识点为后续深入...
- **内置正则表达式**:Groovy内置了对正则表达式的强大支持,无需导入额外库即可实现文本匹配和替换等操作,简化了字符串处理的复杂度。 - **闭包**:闭包是Groovy中一个非常强大的特性,允许函数作为第一类公民,...
这里的`regex`参数是一个正则表达式,用于定义分割字符串的规则。例如,如果你有一个逗号分隔的字符串,你可以这样做: ```groovy def str = "apple,banana,grape" def parts = str.split(",") println parts // ...
作为一款旨在提升开发效率与代码可读性的语言,Groovy在数组和列表对象上的操作展现出了令人赞叹的灵活性与便捷性。本篇聚焦于Groovy中的数组操作技巧,特别是其独特的`join`、`flatten`以及加减乘运算,展示如何...