4.1.3 英文单词的分割符验证

本文介绍了如何使用正则表达式验证英文单词间的分隔符,包括常见的标点符号、破折号、省略号等,并提供了三个正则表达式实例(26、27、28)进行详细解释,用于检查单词是否被正确分隔。通过Regex Tester工具测试了这些表达式,确保其有效性和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在英文文本中,各个英文单词被分隔符所分开。这些分隔符包括英文标点符号、空白字符等。其中,英文标点符号比较多,如,(逗号)、.(点号)、?(问号)、:(冒号)、;(分号)、'(单引号)、!(感叹号)、"(双引号)、-(连接号)、--(破折号)、(省略号)、()(小括号)、[](中括号)、{}(大括号)、`(所有格符号)等。

  在英文文本中,有时需要验证两个英文单词是否被标点符号分开,或者是否被指定的分隔符分开。以下正则表达式能够验证英文单词。

[a-zA-Z]+                                                                      (26)

  以下正则表达式能够验证英文单词之间的分割符号。

[-,.?:;'"!`]|(-{2})|(/.{3})|(/(/))|(/[/])|({})                          (27)

  正则表达式(27)解释:

      [-,.?:;'"!']匹配字符-,.?:'"!`-{2}匹配破折号--

      /.{3}匹配省略号

      /(/)匹配小括号()

      /[/]匹配中括号。

      {}匹配大括号。

  使用工具Regex Tester测试正则表达式(27),结果如图所示。

 

 

  以下正则表达式能够验证英文单词之间的分割符号,且分隔符的两边都是英文单词。

[a-zA-Z]+([-,.?:;'"!`]|(-{2})|(/.{3}))/s*[a-zA-Z]+                       (28)

  正则表达式(28)解释:

      [a-zA-Z]+匹配英文单词。

      [-,.?:;'"!']可以匹配-,.?:'"!`-{2}匹配破折号--

      /.{3}匹配省略号

      /s*可以匹配0个或多个空白字符。

  使用工具Regex Tester测试正则表达式(28),结果如图所示。

 

 

 
实验一:词法分析 一、实验目的 通过设计一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识、常数、运算分隔符五大类。并依次输出各个单词的内部编码及单词号自身值。 二、实验预习提示 1、 词法分析器的功能和输出格式 词法分析器的功能是输入源程序,输出单词号。词法分析器的单词号常常表示成以下的二元式(单词种别码,单词号的属性值)。本实验中,采用的是一类号对应一个种别码的方式。 2、 单词的BNF表示 ----> ----> ----> + ----> - 等等 3、 模块结构(见课本P95-96)(可根据自己的理解适当修改) 三、实验过程和指导: (一) 准备: 1. 阅读课本有关章节,明确语言的语法,写出基本保留字、标识、常数、运算分隔符和程序例。 2. 初步编制好程序。 3. 准备好多组测试数据。 (二) 上机: (三) 程序要求: 1. 要求用C++Builder或者Dephi或者VC、VB等可视化编程工具编写;要求有界面(即一般windows下应用程序界面)。 2. 输入为某语言源代码。 程序输入/输出示例: 如源程序为C语言。输入如下一段: main() { int a,b; a=10; b=a+20; } 要求输出如下(并以文件形式输出)。 (2,”main”) (5,”(“) (5,”)“) (5,”{“} (1,”int”) (2,”a”) (5,”,”) (2,”b”) (5,”;”) (2,”a”) (4,”=”) (3,”10”) (5,”;”) (2,”b”) (4,”=”) (2,”a”) (4,”+”) (3,”20”) (5,”;”) (5,”}“) 注:为右大括号 要求(可根据实际情况加以扩充和修改): 识别保留字:if、int、for、while、do、return、break、continue等等,单词种别码为1。 其他的标识,单词种别码为2。 常数为无号数,单词种别码为3。 运算包括:+、-、*、/、=、>、=、<=、!= ;单词种别码为4分隔符包括: “,”“;”“(”“)”“{”“}”等等, 单词种别码为5。 (四) 程序思路(仅供参考): 0. 定义部分:定义常量、变量、数据结构。 1. 初始化:从文件将源程序输入到字缓冲区中。 2. 取单词前:去掉多余空白。调用过程GETNB(); 3. 提取字组成单词,利用课本P97图4.5转换图构造单词扫描过程SCAN(),需要根据实际情况加以修改。 4. 判断单词的种别码,调用过程LOOKUP(); 5. 显示(导出)结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值