Group, Greedy and Lazy in Regular Expression

 

(…) means a group, group can have a name, form is: (?’groupname’…) or (?<groupname>…)

each group has a GroupID (from 1 to infinite), group 0 is the whole matched string

If you want to reference group, you may use /k<groupname> or /GroupNumber

 

For example:

Input: “dream is a dream”

Pattern: “(dream) is a /1”

Result: matched

The first “dream” is group 1, group 0 is “dream is a dream”

 

Input: “dream is a dream”

Pattern: “(?<drm>dream) is a /k<drm>”

Result: matched

Group “drm” is dream, /k<drm> reference group “drm”

 

“Greedy” means a pattern will match a string as long as possible, it’s by default, for example:

Input: dreamdream

Pattern: (dream)*

Result: matched

Matched value: dreamdream

 

 

We can set an lazy pattern:

 

Input: dreamdream

Pattern: (dream)*?

Result: matched

Matched value: Empty

Because *? means as less as possible, 0 is the minimum, so it’s empty

 

Input: dreamdream

Pattern: (dream)+?

Result: matched

Matched value: dream

Because +? means as less as possible, 1 is the minimum, so it’s “dream”, if you use the function “Matches”, you will get 2 Match object, they both are “dream”.

时间: 2024-12-31 20:04:28

Group, Greedy and Lazy in Regular Expression的相关文章

java正则表达式; regular expression

express|正则 概要 文本处理经常涉及的根据一个pattern的匹配.尽管java的character和assorted 的String类提供了low-level的pattern-matching支持,这种支持一般带来了复杂的代码.为了帮助你书写简单的pattern-matching代码,java提供了regular expression.在介绍给你术语和java.util.regex包之后,Jeff Friesen explores 了许多那个包的Pattern类支持的正则表达式结构.然

leetcode 10 Regular Expression Matching(简单正则表达式匹配)

最近代码写的少了,而leetcode一直想做一个python,c/c++解题报告的专题,c/c++一直是我非常喜欢的,c语言编程练习的重要性体现在linux内核编程以及一些大公司算法上机的要求,python主要为了后序转型数据分析和机器学习,所以今天来做一个难度为hard 的简单正则表达式匹配. 做了很多leetcode题目,我们来总结一下套路: 首先一般是检查输入参数是否正确,然后是处理算法的特殊情况,之后就是实现逻辑,最后就是返回值. 当编程成为一种解决问题的习惯,我们就成为了一名纯粹的程序

REGULAR EXPRESSION IN VBSCRIPT

express|vbscript|express|vbscript   REGULAR EXPRESSION IN VBSCRIPTObject RegExp is used to create and execute regular expression Ex.Code:strTarget="test testing tested attest late start"Set objRegExp= New RegExp   'create a regular expression ob

用Regular Expression来改变HTML代码

express     我最近在为一个客户开发在线论坛程序,我想把用户发言中的url或e-mail地址用超链接显示出来. 用JavaScript的regular expressions是最容易实现的.      用户在表单里的多行文本框中输入他们的发言内容,然后把消息送到论坛的用户发言区中,然而,在把消息在论坛里显示出来之前,我要调用一个函数来处理消息,对url动些手脚.      我不想在这里讨论如何从数据库里取得一条记录了,这个站点已经说得很透彻了. 我们假设用户的消息文本存放在数据库中,并

正则表达式regular expression详述(一)

express|正则 正则表达式是regular expression,看来英文比中文要好理解多了,就是检查表达式符 不符合规定!!正则表达式有一个功能十分强大而又十分复杂的对象RegExp,在JavaScript1.2 版本以 上提供. 下面我们看看有关正则表达式的介绍: 正则表达式对象用来规范一个规范的表达式(也就是表达式符不符合特定的要求,比如是不是Email 地址格式等),它具有用来检查给出的字符串是否符合规则的属性和方法. 除此之外,你用RegExp构造器建立的个别正则表达式对象的属性

Regular Expression 正则表达式-1 (C#)

express|正则 起因是因为一片帖子,问到了一个问题,帖子是这样的: Originally Posted by 人就是这样我想编一个程序,但学CompSci是很久以前的事情了.想请教请教大家. 有两个txt文件,一个叫source.txt(有很多数据), 一个叫target.txt(空白的) 我想把source.txt里的一些数据提取出来(稍微修改一下),然后写到target.txt里面. 举个例子:sourse.txt里的数据:2oi)4@##( "data:001%abc"&g

&quot;proxy_pass&quot; cannot have URI part in location given by regular expression

在windows中使用nginx时报错: C:\TDDOWNLOAD\nginx-1.6.0\nginx-1.6.0>nginx.exe -s reload nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or insid e

LeetCode 10 Regular Expression Matching (正则表达式匹配)

翻译 实现支持"."和"*"的正则表达式匹配. "." 匹配支持单个字符 "*" 匹配零个或多个前面的元素 匹配应该覆盖到整个输入的字符串(而不是局部的). 该函数的原型应该是: bool isMatch(const char * s, const char * p) 示例: isMatch("aa","a") → false isMatch("aa","a

[LeetCode]10.Regular Expression Matching

题目 mplement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the preceding element. The matching should cover the entire input string (not partial). The function prototype should