软件构造课程心得——基于语法的编程
有很多程序需要读取文件,根据一定的语法规则从文件中提取相关的信息,这就是基于语法的编程。下面就来讨论一下有关语法编程的一些感悟。
一、语法中的基本操作
1、连接:x ::= y z
将两个语法元素前后连接在一起
2、重复:x ::= y*
将某一个语法元素重复若干次
3、选择:x ::= y | z
在两个语法元素中挑选其中一个
二、语法操作中的一些符号
- ? 表示前面的语法元素出现0次或1次
- +表示前面的语法元素出现1次或多次
- *表示前面的语法元素出现0次、1次或多次
- […] 表示括号中的元素中的某一元素出现1次
如:[aeiou]表示括号中的某一个字母出现
[a-g]表示按照字母表排列的字母a-g的范围内某一字母出现一次
[^a-g]表示字母a-g范围以外的某一字符出现一次
三、正则表达式
这里主要介绍Java语法中正则表达式的重要符号
- ^匹配输入字符串开始的位置
- $匹配输入字符串结束的位置
- *零次或多次匹配前面的字符或子表达式
- +一次或多次匹配前面的字符或子表达式
- ? 零次或一次匹配前面的字符或子表达式
- {n} n 是非负整数。正好匹配 n 次
- {n,} n 是非负整数。至少匹配 n 次。
- {n,m} m 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。
- 匹配除"\r\n"之外的任何单个字符。
- x|y 匹配 x 或 y。
- \d数字字符匹配。
- \D非数字字符匹配
- \s匹配任何空白字符,包括空格、制表符、换页符等。
- \S匹配任何非空白字符。
- \w匹配任何字类字符,包括下划线。
- \W与任何非单词字符匹配。