`

Flex 正则表达式 字符串匹配 例子

    博客分类:
  • Flex
阅读更多

   var pattern:RegExp = /\w*sh\w*/gi;
   var str:String = "She sells seashells by the seashore";
   var result:Array = pattern.exec(str);
       
   while (result != null)
   {
       trace(result.index, "\t", pattern.lastIndex, "\t", result);
       result = pattern.exec(str);
   }

 

结果:

 

0 3 She

10 19 seashells

27 35 seashore

 

附:

 

http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7ea8.html

 

RegExp 类包含两个方法:exec()test()

除 RegExp 类的 exec()test() 方法外,String 类还包含以下方法,使您可以在字符串中匹配正则表达式:match()replace()search()splice()

 

test() 方法

RegExp 类的 test() 方法只检查提供的字符串是否包含正则表达式的匹配内容,如下面的示例所示:

var pattern:RegExp = /Class-\w/; 
var str = "Class-A"; 
trace(pattern.test(str)); // output: true

exec() 方法

RegExp 类的 exec() 方法检查提供的字符串是否有正则表达式的匹配,并返回具有如下内容的数组:

  • 匹配的子字符串

  • 同正则表达式中的任意括号组匹配的子字符串

该数组还包含 index 属性,此属性指明子字符串匹配起始的索引位置。

例如,请考虑使用以下代码:

var pattern:RegExp = /\d{3}\-\d{3}-\d{4}/; //U.S phone number 
var str:String = "phone: 415-555-1212"; 
var result:Array = pattern.exec(str); 
trace(result.index, " - ", result); 
// 7-415-555-1212

在正则表达式设置了 g (global) 标志时,多次使用 exec() 方法可以匹配多个子字符串:

var pattern:RegExp = /\w*sh\w*/gi; 
var str:String = "She sells seashells by the seashore"; 
var result:Array = pattern.exec(str); 
     
while (result != null) 
{ 
    trace(result.index, "\t", pattern.lastIndex, "\t", result); 
    result = pattern.exec(str); 
} 
//output:  
// 0      3      She 
// 10      19      seashells 
// 27      35      seashore

分享到:
评论

相关推荐

    使用正则表达式匹配字符串数据PPT学习教案.pptx

    正则表达式虽然学习曲线较陡峭,但一旦掌握,就能高效处理各种字符串匹配问题,尤其在处理大量数据的文本分析和过滤时,其灵活性和效率是其他方法难以比拟的。因此,它是每个IT专业人士必备的技能之一。

    0513《编译原理》答案 设计并实现TINYC语言的扫描程序.doc

    每个记号都对应一个特定的字符串集合,这些集合可以通过正则表达式来定义。例如,标识符的正则表达式可能是`[a-zA-Z_][a-zA-Z0-9_]*`,表示以字母或下划线开始,后跟任意数量的字母、数字或下划线。 3.2 **各记号...

    从lex,yacc到javacc

    正则表达式是描述字符串模式的简洁而强大的工具,它们在词法分析中扮演着核心角色。在lex(以及后来的flex)中,正则表达式用于定义词法规则,帮助识别源代码中的不同元素。下面将深入探讨正则表达式的基本概念及其...

    lex词法分析生成器.doc

    它允许程序员以高级、问题导向的方式来定义字符串匹配规则,并自动生成识别这些规则的C或Ratfor语言的分析器。 1. **Lex源码**:Lex的源码由正则表达式和相应的C或Ratfor代码片段组成。这些表达式定义了输入流中...

    词法分析器Flex.docx

    下面是一个具体的Flex实例,展示了如何使用Flex扫描并匹配文件中的字符串,并输出其类型和内容: ```flex %{ #include #include %} INT_DEC [1-9][0-9]* | [0] INT_HEX [0][Xx]([1-9][0-9]* | [0]) INT_OCT [0]...

    词法分析flex源代码实验报告

    在这个例子中,`[0-9]+`匹配一个或多个连续的数字,当匹配成功时,`yytext`变量包含了匹配的字符串,然后调用`printf`函数打印出对应的标记类型和值。 实验报告可能会涵盖以下内容: 1. **Flex工具介绍**:解释...

    编译原理 词法分析 编译原理 词法分析

    在实际应用中,词法分析器可能会遇到各种特殊情况,如注释的处理、字符串字面量的识别、多行或嵌套的正则表达式匹配等。对于这些复杂情况,词法分析器需要有恰当的处理机制,例如通过状态机模型来处理不同上下文下的...

    用flex自动生成词法分析器

    Flex接受一种特定的描述语言,即.l(lex)文件,其中定义了各种正则表达式来匹配源代码中的模式。当Flex处理这个.l文件时,它会生成C代码,该代码实现了一个词法分析器,该分析器能够识别并处理这些模式。生成的C...

    词法分析的一些例子(个人编写)

    词法分析是编译原理中的一个...在这个过程中,你可能会遇到的挑战包括处理复杂的语言特性,如嵌套的字符串和注释,以及如何有效地处理源代码中的空白和换行。实践这些例子,将使你在编译原理和实际编程项目中更加自信。

    java词法分析举例

    2. **正则表达式**:在实现词法分析器时,通常使用正则表达式来匹配不同类型的符号。例如,一个简单的正则表达式可以用来匹配所有的数字,或者匹配所有以字母开头,后跟任意数量字母或数字的标识符。 3. **词法分析...

    lex源代码_词法分析器_

    在这个例子中,`yylval`是一个特殊变量,用于存储词法分析器返回的值,`yytext`则指向当前匹配的字符串。`yyreturn`函数用于返回解析到的token类型。 完成`.l`文件编写后,使用`flex`命令生成`lex.yy.c`源代码,再...

    词法分析演示(词法分析器)

    手工编写词法分析器需要对正则表达式有深入理解,而自动生成器如Flex(用于C/C++)和Lex(更通用)则允许开发者定义规则集,然后自动生成相应的分析器代码。 在词法分析过程中,遇到的关键点包括: 1. **关键词...

    flex manual 中文手册 Loon.x翻译

    - **扩展正则表达式**: `flex`支持扩展的正则表达式,这使得模式匹配更加灵活和强大。 - **匹配规则**: 描述了`flex`如何匹配输入数据中的模式,以及匹配的具体过程。 #### 七、动作 - **动作定义**: 当模式匹配...

    flex 代码转换器 技术手册

    Flex 是一款功能强大的文本扫描器工具,主要用于从输入文本中识别并提取出模式匹配的字符串。它能够根据用户提供的规则文件或者 C 语言代码中的规则自动生成 C 语言源代码,这些源代码可以用于构建高效的词法分析器...

    ME.zip_flex

    JFlex会根据这些规则生成一个Java类,这个类包含了分析输入字符串并识别词法单元的代码。一旦生成,你可以在你的编译器或者解释器中使用这个类来处理输入的源代码。 以"ME.flex"为例,假设它包含以下规则: ```...

    词法分析器实验代码和数据

    这不仅可以帮助我们更好地理解编译器的工作流程,而且对于提升编程能力,尤其是对字符串处理和正则表达式运用的理解,也有很大帮助。通过这两个文件的学习,我们可以对词法分析有更深入的认识,并能够动手实现自己的...

    json_flex_demo

    在"json_flex_demo"中,"flex"可能指的是Flex编译器,这是一个用于处理正则表达式的工具,常被用来解析或生成JSON数据。Flex可以生成词法分析器(lexer),用于识别输入流中的模式,这对于处理JSON字符串并将其转换...

    FLEX-中文手册1

    模式是匹配输入的字符串或正则表达式,而动作是在匹配成功时执行的C代码。例如,以下规则将所有"username"替换为当前登录名: ```c %% username printf("%s", getlogin()); %% ``` 另一个例子是计算输入的行数...

    lex.rar_lex词法编译

    模式是正则表达式,用于匹配输入字符串的一部分;动作是C或C++代码块,当模式匹配成功时执行。 2. **词法分析过程**:词法分析器逐字符读取源代码,尝试匹配规则文件中的模式。一旦找到匹配,就返回相应的词法单元...

Global site tag (gtag.js) - Google Analytics