FLex中RegExp正则表达式

正则表达式总结
本文总结了各种类型的正则表达式,包括整数、浮点数及字母组合等的匹配规则,适合初学者快速掌握正则表达式的使用。

今天在网上看到Flex的正则表达式,回合Java的有些区别,不过区别不大,先进行总结记录以后会不定期更新一些例子。

^\d+$  //匹配非负整数(正整数 + 0)
^[0-9]*[1-9][0-9]*$  //匹配正整数
^((-\d+)|(0+))$  //匹配非正整数(负整数 + 0)
^-[0-9]*[1-9][0-9]*$  //匹配负整数
^-?\d+$    //匹配整数
^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数 + 0)
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数
^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数 + 0)
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数
^(-?\d+)(\.\d+)?$  //匹配浮点数
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串


### 关于正则表达式的学习资源 正则表达式是一种强大的文本处理工具,广泛应用于各种编程语言和操作系统中。LEX 是一种常用的词法分析器生成器,它通过接受正则表达式来定义模式匹配规则[^1]。 #### 正则表达式的简介 正则表达式(Regular Expression, 简称 regex 或 regexp)是用来描述字符串模式的一种形式化方法。它可以用来查找、替换以及验证字符串中的特定部分。在 Unix 系统中,LEX 工具利用正则表达式来进行词法分析,从而实现更复杂的语法解析功能。 以下是几个常见的正则表达式元字符及其含义: - `.` 匹配任意单个字符。 - `*` 表示前面的元素可以重复零次或多次。 - `+` 表示前面的元素至少出现一次。 - `{n,m}` 定义前一项最少出现 n 次,最多 m 次。 - `[abc]` 匹配方括号内的任一字符 a、b 或 c。 - `(a|b)` 匹配圆括号内的选项之一,即 a 或 b。 #### LEX 的基本概念与应用实例 LEX 是一个用于生成扫描程序的工具,其核心在于将正则表达式转换成对应的 C 代码片段。下面是一个简单的 LEX 文件示例: ```lex %{ #include <stdio.h> %} %% [a-zA-Z_][a-zA-Z0-9_]* { printf("Identifier: %s\n", yytext); } [0-9]+ { printf("Number: %s\n", yytext); } "=" { printf("Assignment operator\n"); } "+"|"-" { printf("Arithmetic operator\n"); } %% int main() { yylex(); return 0; } ``` 上述代码展示了如何识别标识符、数字、赋值运算符以及加减算术运算符。当运行此 LEX 脚本时,它会读取输入流并打印相应的分类信息。 #### 推荐学习资料 对于希望深入理解正则表达式及 LEX 使用的人群来说,可以从以下几个方面入手: 1. **官方文档**:查阅 Flex (LEX 的现代版本) 的手册页或者在线帮助文件。 2. **书籍推荐**:《Mastering Regular Expressions》是一本非常经典的书目,适合初学者到高级用户阅读。 3. **实践练习网站**:像 Regex101 这样的平台提供了实时调试环境,方便测试不同的正则表达式组合效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值