0 0

不理解一段正则表达式语义 [^\"'> \t\)]5

[^\"'> \t\)]

1.这段正则表达式是什么意思?
2.\"是对双引号做转义,python正则中还有哪些特殊符号需要\做转义(不考虑\number,\w等),官方文档里写着“permitting you to match characters like "*", "?", and so forth”。我就是想知道so forth里都包括哪些,如果能给出引用地址就更好。

问题补充:根据ihavegotyou提供的“Escape Sequence Meaning Notes”,原正则中的尾部附近的 \) 是不是可以直接写成 )
这样子原正则表达式是不是写成[^\"'> \t)]就好了?

问题补充:比较认同icefishc的说法
虽然在http://www.python.org/doc/2.5/lib/re-syntax.html里有这样的描述:“(Caret.) Matches the start of the string, and in MULTILINE mode also matches immediately after each newline.”
但同时也有这样的描述:“For example, [^5] will match any character except "5"”

感觉python文档关于^的描述有点让我感觉混乱。因为http://www.python.org/doc/2.5/lib/re-syntax.html里,在解释[]时说:"^" elsewhere will simply match the "^" character。在解释^时却又说:(Caret.) Matches the start of the string, and in MULTILINE mode also matches immediately after each newline.
2010年1月19日 12:49

8个答案 按时间排序 按投票排序

0 0

采纳的答案

The special characters are:

'.'
    (Dot.) In the default mode, this matches any character except a newline. If the DOTALL flag has been specified, this matches any character including a newline.
'^'
    (Caret.) Matches the start of the string, and in MULTILINE mode also matches immediately after each newline.
'$'
    Matches the end of the string or just before the newline at the end of the string, and in MULTILINE mode also matches before a newline. foo matches both ‘foo’ and ‘foobar’, while the regular expression foo$ matches only ‘foo’. More interestingly, searching for foo.$ in 'foo1\nfoo2\n' matches ‘foo2’ normally, but ‘foo1’ in MULTILINE mode; searching for a single $ in 'foo\n' will find two (empty) matches: one just before the newline, and one at the end of the string.
'*'
    Causes the resulting RE to match 0 or more repetitions of the preceding RE, as many repetitions as are possible. ab* will match ‘a’, ‘ab’, or ‘a’ followed by any number of ‘b’s.
'+'
    Causes the resulting RE to match 1 or more repetitions of the preceding RE. ab+ will match ‘a’ followed by any non-zero number of ‘b’s; it will not match just ‘a’.
'?'

Reference:
http://docs.python.org/library/re.html

2010年1月19日 13:13
0 0

在[]中就是表示否定

2010年1月19日 17:17
0 0

^符号,本来都具有双义。
建议,对每一个regular expression都操作一下。

2010年1月19日 16:34
0 0

非" 或 ' 或 > 或 制表位\t 或 )

2010年1月19日 14:34
0 0

后面一个太多了,没有贴完。
()是匹配一个完整的group.
所以,也应该反义.

2010年1月19日 13:24
0 0

     '\A' Matches the start of the string.
    '\b' Matches the empty string that forms the boundary at the beginning or end of a word.
    '\B' Matches the empty string that is not the beginning or end of a word
    '\d' Matches any decimal digit.
    '\D' Matches any non-decimal digit.
   '\s' Matches any whitespace character.
    '\S' Matches any non-whitespace charaacter.
    '\w' Matches any alphanumeric character and the underscore.
    '\W' Matches any non-alphanumeric character.
    '\Z' Matches the end of the string.

Reference:
http://python.about.com/od/regularexpressions/g/regex_spec_char.htm

2010年1月19日 13:09
0 0

Escape Sequence Meaning Notes
------- ------ ------
\newline Ignored
\\ Backslash (\)
\' Single quote (')
\" Double quote (")
\a ASCII Bell (BEL)
\b ASCII Backspace (BS)
\f ASCII Formfeed (FF)
\n ASCII Linefeed (LF)
\N{name} Character named name in the Unicode database (Unicode only)
\r ASCII Carriage Return (CR)
\t ASCII Horizontal Tab (TAB)
\uxxxx Character with 16-bit hex value xxxx (Unicode only) (1)
\Uxxxxxxxx Character with 32-bit hex value xxxxxxxx (Unicode only) (2)
\v ASCII Vertical Tab (VT)
\ooo Character with octal value ooo (3,5)
\xhh Character with hex value hh (4,5)

Reference:
http://www.network-theory.co.uk/docs/pylang/Stringliterals.html

2010年1月19日 13:05
0 0

以 " 或 ' 或 > 或 制表位\t 或 ) 开头

2010年1月19日 12:51

相关推荐

    编译原理习题

    例如,对于表达式 "E => E+T => E+T+T => T+T+T => F+T+T => i+T+T => i+F+T => i+i+T => i+i+F => i+i+i",这是最左推导的过程,从文法的起始符号 E 开始,逐步推导到具体的字符串 i+i+i。同样,最右推导是从最终的...

    python词法分析器

    正则表达式是一种强大的文本模式匹配工具,可以用于匹配、查找、替换等操作。 3. **分词(Tokenization)**:词法分析器将源代码字符串分割成一系列的标记(token)。每个标记都有一个类型(如标识符、数字或字符串...

    编译原理实践及应用

    例如,一个正则表达式00(0|1)*表示以两个0开头,后面跟着任意数量(包括零个)0或1的字符串。 3. 有限状态自动机(DFA或NFA)是识别和处理输入序列的模型。DFA的状态转换是确定性的,即对于每个状态和输入,都有...

    词法分析和程序语言的语法描述讲义

    词法分析器通常是由正则表达式定义的,它们用于识别特定模式并生成相应的标记。例如,在C语言中,"if"是一个关键词,"num"可能是一个标识符,"+"是一个操作符,而"123"可能是一个整型常量。 在词法分析阶段,词法...

    2005-编译1

    正则表达式如a{b}c可以理解为ab*c,表示一个或多个b字符跟随一个a和一个c,构建对应的DFA是编译器设计的一部分,它能够识别符合该模式的字符串。 总的来说,编译原理涵盖了词法分析、语法分析、语义分析、中间代码...

    编译原理编译原理编译原理编译原理编译原理

    根据提供的信息,我们可以总结出以下有关编译...综上所述,编译原理不仅涉及到了高级语言到低级语言的转换过程,还包括了对文法、推导、语法树及正则表达式的深入理解。这些知识点对于理解和设计编译器具有重要意义。

    编译原理词法分析源程序

    在这个过程中,源程序被分解成一系列有意义的符号,即词法单元或标记(tokens),为后续的语法分析和语义分析奠定基础。 词法分析器(lexer 或 tokenizer)通常由正则表达式驱动,用于识别源代码中的关键字、标识符...

    c - minus手工构造词法分析器

    1. 正则表达式:词法分析器的核心是识别语言的各个部分,这通常通过正则表达式完成。每个语言元素都有其对应的正则模式,例如,数字可以表示为`\d+`,标识符可以表示为`[a-zA-Z_][a-zA-Z0-9_]*`。 2. 状态机:词法...

    LEX工具实现C语言的词法分析器

    总之,LEX工具提供了一种高效的方式来构建词法分析器,它将正则表达式的抽象与实际的编程任务结合,使得开发者可以专注于语言的语义,而不是底层的扫描细节。通过掌握LEX工具的使用,不仅可以加深对编译原理的理解,...

    编译原理词法分析

    词法分析是编译原理中的一个关键步骤,它是编译器设计的第一阶段,负责将源代码文本转换成一系列有意义的符号或标记(Token),为后续的语法分析和语义分析提供基础。在这个过程中,词法分析器(也称为词法分析程序...

    Basics of Compiler Design.pdf

    正则表达式是一种模式匹配工具,用于描述字符串集合。它们被广泛应用于词法分析中,用来定义各种类型的记号。例如,可以通过正则表达式`[a-zA-Z]+`来匹配所有的字母组成的字符串,从而识别出源代码中的标识符。 ###...

    编译原理的词法分析器

    词法分析器的工作基于字符流,它将字符流转换成一系列具有语义的词素,这些词素是编译器可以理解的基本单元。 词法分析器的设计通常基于正则表达式或者有限状态自动机(Finite State Automata, FSA)。正则表达式...

    编译原理词法分析器基于lex的词法分析器

    它允许用户通过定义一系列正则表达式规则来描述源代码中的不同词汇元素。当lex读取这些规则后,会自动生成相应的C代码,这个C代码能够识别和处理输入流中的各种词汇结构。 在词法分析器的设计过程中,首先需要理解...

    计算机软件编译原理知识

    正则表达式是描述语言模式的一种方式,常用于文本处理和搜索。它们与DNA的关系可能是指在生物信息学中,正则表达式可以用来匹配和分析基因序列,这是计算生物学中的应用之一。 在给定的文法示例中,我们看到一个上...

    c#词法分析代码包

    8. **正则表达式**:虽然不是直接的词法元素,但在C#中,正则表达式常用于文本处理,词法分析器可能会涉及。 9. **预处理器指令**:如`#define`、`#if`、`#endif`等,它们影响编译过程,词法分析器需识别并处理这些...

    词法分析器Lex(编译原理)

    这些Token由词法规则(通常用正则表达式描述)定义,例如,数字、字符串、关键字、分隔符等。词法分析器通常是自动生成的,使用工具如Flex(以前的Lex)或者JFlex。 Flex是一个广泛使用的词法分析器生成器,它根据...

    编译原理 课程设计

    词法分析器通常会使用正则表达式或者有限状态自动机来定义和识别这些标记。 2. **语法分析**: 语法分析阶段将词法分析产生的标记流转换为抽象语法树(AST)。在这个例子中,我们可以使用递归下降法来解析算术...

    《编译原理》——词法分析

    2. **模式匹配**:词法分析器通过预定义的一组正则表达式或者有限状态自动机(FSA)来匹配字符序列,形成词汇单元(token)。例如,匹配数字序列形成整型或浮点型常量,匹配字母和下划线组合形成标识符,匹配特定...

    编译原理 C# 词法分析器

    词法分析器通常通过正则表达式来定义各种类型的词法单元,如关键字、标识符、常量、运算符等。 在C#语言中,词法分析器需要处理以下几种主要的词法单元: 1. 关键字:C#包含一组预定义的关键词,如`class`、`if`、...

Global site tag (gtag.js) - Google Analytics