字符串字面量
来源:互联网 发布:霍金预言2600年 知乎 编辑:程序博客网 时间:2024/05/02 15:43
这个API提供的模式匹配的最基本形式是字符串字面量的匹配。例如,如果正则表达式为foo,输入字符串为foo,那么匹配结果就成功,因为两个字符串相等。试一试下面的测试示例:
Enter your regex: foo
Enter input string to search: foo
I found the text "foo" starting at index 0 and ending at index 3.
这个匹配成功。注意,当输入字符串包含3个字符时,开始索引为0,结束索引为3。按照约定,范围包含开始索引,而不包含结束索引,如图13-1所示。
o
o
f
索引 2
索引 1
单元 2
单元 1
索引 0
单元 0
图13-1 String字面量“foo”,标出了编号的单元和索引值
字符串中的每个字符都在自己的单元(cell)中,索引位置指向每个单元之间。字符串“foo”从索引0开始,到索引3结束,尽管字符本身只占用单元0、1和2。
在后续的匹配中,你会注意到一些重叠;下一个匹配的开始索引和前一个匹配的结束索引相同:
Enter your regex: foo
Enter input string to search: foofoofoo
I found the text "foo" starting at index 0 and ending at index 3.
I found the text "foo" starting at index 3 and ending at index 6.
I found the text "foo" starting at index 6 and ending at index 9.
元字符
这个API还支持很多影响匹配模式的方式的特殊字符。把正则表达式改为cat.,输入字符串改为cats。输出如下:
Enter your regex: cat.
Enter input string to search: cats
I found the text "cats" starting at index 0 and ending at index 4.
这个匹配仍然成功,尽管点号(.)没有出现在输入字符串中。匹配成功的原因在于点号是元字符(metacharacter)——被匹配器解释为具有特殊含义的字符。元字符“.”的含义是“任何一个字符”,这就是这个例子中匹配成功的原因。
这个API支持的元字符有:( [ { / ^ - $ | } ] ) ? * +.。
注意 在某些情况下,前面列出的特殊字符不被当作元字符对待。随着你更多地学习如何构造正则表达式,就会遇到这种情况。但是,你可以使用这个清单检查一个特殊字符是否被当作元字符。例如,字符!、@和#永远都不会具有特殊含义。
有两种方式可以强制元字符作为普通字符:
l 在元字符前面加上反斜线,或者
l 用/Q(开始引用)和/E(结束引用)把元字符括起来。
使用这种技术时,/Q和/E可以放在表达式内的任何位置,前提是/Q先出现。
- 字符串字面量
- 字符串字面量
- 1. 字符串字面量
- 原始字符串字面量
- 字符串字面量
- C 和 C++ 字符串字面量
- 拆箱、字面量、字符串+等细节问题
- C/C++字符串字面量的类型
- swift 字符串字面量转义字符
- 字符字面量及字符串的特点
- 字面量
- 字面量
- 字面量
- 字面量
- 字面量
- 怎么理解字符串常量和字符串字面量
- 修改字符串字面量&用数组/指针实现的字符串。
- C 和 C++ 字符串字面量的比较
- 正则表达式是什么
- 测试示例
- Coldfunsion 资料
- P2P And C#
- 补充的日志
- 字符串字面量
- Hibernate Gossip: Criteria 基本查詢
- 字符类
- 异步Socket编程III
- LINQ专题——基本函数篇(1)
- 预定义字符类
- 量词
- 捕获组
- 关于我的开源项目JBOX跟LUCENE的区别