量词描述了一个模式吸收输入文本的方式
2013-08-26 12:02
302 查看
贪婪的:量词总是贪婪的,除非有其他的选项被设置。贪婪表达式会为所有可能的模
式发现尽可能多的匹配。导致此问题的一个典型理由就是假定我们的模式仅能匹配第
一个可能的字符组,如果它确实是贪婪的,那么它就会继续往下匹配。
勉强的:用问号来指定,这个量词匹配满足模式所需的最少字符数。因此也称作懒惰
的、最少匹配、非贪婪的或不贪婪的(lazy, minimal matching, non-greedy, or
ungreedy)。
占有的:量词当前只有在 java 语言中才可用(在其他语言中不可用),并且它也更
高级,因此我们大概不会立刻用到它。当正则表达式被应用于字符串时,它会产生相
当多的状态以便在匹配失败时可以回溯。而占有量词并不保存这些中间状态,因此它
们可以防止回溯。它们常常用于防止正则表达式失控,因此可以使正则表达式执行起
来显得更有效。
我们应该非常清楚地意识到表达式’X’通常必须要用圆括号括起来,以便它能够按照我们期
望的效果去执行。例如:
abc+
看起来它似乎应该匹配一个或多个’abc’序列,如果我们把它应用于输入字符串
‘abcabcabc’,我们实际上会获得 3 个匹配。然而,这个表达式实际上表示的是:匹配’ab’,
后面跟随一个或多个’c’。为了匹配一个或多个完整的’abc’字符串,我们必须这样表示:
(abc)+
你会发现在使用正则表达式时,很容易混淆。因为它是一种在 Java 之上的新语言。
式发现尽可能多的匹配。导致此问题的一个典型理由就是假定我们的模式仅能匹配第
一个可能的字符组,如果它确实是贪婪的,那么它就会继续往下匹配。
勉强的:用问号来指定,这个量词匹配满足模式所需的最少字符数。因此也称作懒惰
的、最少匹配、非贪婪的或不贪婪的(lazy, minimal matching, non-greedy, or
ungreedy)。
占有的:量词当前只有在 java 语言中才可用(在其他语言中不可用),并且它也更
高级,因此我们大概不会立刻用到它。当正则表达式被应用于字符串时,它会产生相
当多的状态以便在匹配失败时可以回溯。而占有量词并不保存这些中间状态,因此它
们可以防止回溯。它们常常用于防止正则表达式失控,因此可以使正则表达式执行起
来显得更有效。
我们应该非常清楚地意识到表达式’X’通常必须要用圆括号括起来,以便它能够按照我们期
望的效果去执行。例如:
abc+
看起来它似乎应该匹配一个或多个’abc’序列,如果我们把它应用于输入字符串
‘abcabcabc’,我们实际上会获得 3 个匹配。然而,这个表达式实际上表示的是:匹配’ab’,
后面跟随一个或多个’c’。为了匹配一个或多个完整的’abc’字符串,我们必须这样表示:
(abc)+
你会发现在使用正则表达式时,很容易混淆。因为它是一种在 Java 之上的新语言。
相关文章推荐
- linux 不回车直接读取一个字符的方法(termios结构的描述了终端的模式,在这段代码中我们改变了它,使得终端能够接收到键盘输入马上返回。)
- 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到 Student 类中作为类的私有属性。创建一个 Student 类型的对象数组,对学号进行 升序排序并输出
- 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
- 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 多个相同name的文本输入框,输入其中一个后,使剩下的不能输入值
- 如何以编程方式设置基于 Windows Mobile 的 Smartphone 输入模式?
- 编写程序输入一个n*n的矩阵,求出两条对角线元素值之和(注意把输入的元素写入二维数组的方式)
- 通过输入cmd命令提示符将txt多个文本合并成一个文本
- 一个简单的系统配置文件使用DTD和XSD两种方式描述
- 二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。 对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为: ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根 小易想知道最多可以放多少块蛋糕在网格盒子里。 输入描述: 每组数组包含网格长宽W,
- 描述在浏览器中输入一个网址后的发生的事情
- 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表
- 富文本(TTTAttributedLabel是一个替代,UILabel提供了一种简单的方式来高效地呈现属性字符串。作为奖励,它还支持链接嵌入,自动与NSTextCheckingTypes手动通过指定)
- 一个开源的从图片生成文本描述的工具:NeuralTalk
- 问题描述大概如下:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 动态产生一个TextBox,并使输入的文本靠右对齐
- 一个简易的文本输入提示插件
- 如何使SWT文本只能输入金额(一个小数点及数字)
- 得到一个网页的内容(命令方式和文本方式)
- c#如何实现一个线程暂停,等待用户输入文本后继续运行?