请教关于重复的正则表达式

回复: 请教关于重复的正则表达式

我是说同样的结构,同样的词汇,在语篇的两个句子中出现,达到强调的目的。比如说,Oh my son Absalom, my son Absalom!
 
回复: 请教关于重复的正则表达式

如果people要重复最少一次,虽多5词则为:\speople\s{1,5}.一下是常见正则表达式方法:
[FONT=宋体]正则表达式重复指示符[/FONT]
[FONT=宋体]正则表达式的另外一个强大的功能是重复匹配的能力。前述的任何一种“原子”之后,都可以指定一个重复指示符。下面列出各种重复指示符:[/FONT]

? [FONT=宋体]表示前一“原子”可有可无[/FONT]([FONT=宋体]重复[/FONT]0[FONT=宋体]或[/FONT]1[FONT=宋体]次[/FONT])[FONT=宋体]。例如[/FONT]
[FONT=宋体]“我们[/FONT]?[FONT=宋体]”匹配“我”或“我们”;[/FONT]

+ [FONT=宋体]表示前一“原子”至少匹配一次。例如“[/FONT]\w+[FONT=宋体]”匹[/FONT]
[FONT=宋体]配任何一个无符号整数;[/FONT]

* [FONT=宋体]表示前一“前子”重复匹配[/FONT]0[FONT=宋体]或多次。例如“[/FONT]\w*[FONT=宋体]”[/FONT]
[FONT=宋体]表示许多高级语言对“变量”的定义:以字母或下划[/FONT]
[FONT=宋体]线开头,后接任意多个字母数字或下划线;[/FONT]
[FONT=宋体]正则表达式特殊字符[/FONT]
\ [FONT=宋体]将其后的字符变成特殊字符[/FONT]
* [FONT=宋体]匹配它前面的字符[/FONT]0[FONT=宋体]次或多次[/FONT]
+ [FONT=宋体]匹配它前面的字符[/FONT]1 [FONT=宋体]次或[/FONT]n [FONT=宋体]次。等价于[/FONT]{1,}
? [FONT=宋体]匹配它前面的字符[/FONT]0 [FONT=宋体]次或[/FONT]1 [FONT=宋体]次,即可有可无[/FONT]
. ([FONT=宋体]小数点[/FONT])[FONT=宋体]匹配除换行符外的所有单个的字符[/FONT]
x|y [FONT=宋体]匹配’[/FONT]x[FONT=宋体]’或者’[/FONT]y[FONT=宋体]’[/FONT]
{n} [FONT=宋体]这里的[/FONT]n [FONT=宋体]是一个正整数。匹配前面的[/FONT]n [FONT=宋体]个字符。[/FONT]
{n,} [FONT=宋体]这里的[/FONT]n [FONT=宋体]是一个正整数。匹配至少[/FONT]n [FONT=宋体]个前面的字符。[/FONT]
{n,m} [FONT=宋体]这里的[/FONT]n [FONT=宋体]和[/FONT]m [FONT=宋体]都是正整数。匹配至少[/FONT]n [FONT=宋体]个最多[/FONT]m [FONT=宋体]个前面的字符。[/FONT]
[xyz] [FONT=宋体]一字符列表,匹配列出中的任一字符。你可以通过连字符‐指出一个字符范围。[/FONT]
\d [FONT=宋体]匹配一个数字,等价于[/FONT][0-9][FONT=宋体]。[/FONT]
\D [FONT=宋体]匹配任何的非数字,等价于[/FONT][^0-9][FONT=宋体]。[/FONT]
\n [FONT=宋体]匹配一个换行符[/FONT]
\r [FONT=宋体]匹配一个回车符[/FONT]
\s [FONT=宋体]匹配一个单个[/FONT]white [FONT=宋体]空格符,包括空格,[/FONT]tab[FONT=宋体],换行符[/FONT]
\S [FONT=宋体]匹配除[/FONT]white [FONT=宋体]空格符以外的一个单个的字符[/FONT]
\w [FONT=宋体]匹配所有的数字和字母以及下划线,等价于[/FONT][A-Za-z0-9_][FONT=宋体]。[/FONT]
\W [FONT=宋体]匹配除数字、字母外及下划线外的其它字符,等价于[/FONT][^A-Za-z0-9_][FONT=宋体]。[/FONT]
^ [FONT=宋体]表示匹配的字符必须在最前边。[/FONT]
$ [FONT=宋体]与[/FONT]^[FONT=宋体]类似,匹配最末的字符。[/FONT]
[^0[FONT=宋体]‐[/FONT]9] [FONT=宋体]匹配[/FONT]0-9[FONT=宋体]之外的任何一个字符[/FONT]
[^a[FONT=宋体]‐[/FONT]z] [FONT=宋体]匹配[/FONT]a-z[FONT=宋体]之外的任何一个字符[/FONT]

[FONT=宋体]一些正则表达式的例子[/FONT]
\w+ = any word
? = [FONT=宋体]前面的东西可有可无[/FONT]
\s = Space
[FONT=宋体]类似[/FONT]the new schools/a good teacher[FONT=宋体]这样的结构[/FONT] (\w+_AT1?\s+)?(\w+_J\w+\s+)?(\w+_N\w+\s)+


-ing[FONT=宋体]形式:[/FONT]\w+_V\wG VDG = doing
[FONT=宋体]副词:[/FONT]\w+_R\w+
[FONT=宋体]否定词:[/FONT]\w+_XX
have[FONT=宋体]的各种形式:[/FONT]\w+_VH\w
be[FONT=宋体]动词:[/FONT]\w+_VB\w+
[FONT=宋体]形容词:[/FONT]\w+_J\w+
[FONT=宋体]不定式标记[/FONT]to[FONT=宋体]:[/FONT]to_TO
[FONT=宋体]介词[/FONT]of[FONT=宋体]:[/FONT]of_IO it[FONT=宋体]或[/FONT]IT: it_PPH1
[FONT=宋体]空格:[/FONT]\s [FONT=宋体]多个空格:[/FONT]\s+
[FONT=宋体]实义动词:[/FONT]\w+_VV\w
+ 1[FONT=宋体]次或更多[/FONT]
* 0[FONT=宋体]次或更多[/FONT]

it is very easy to do sth/it has been easy to do
it_PPH1s(\w+_VH\w\s)?(\w+_XX\s)?\w+_VB\w+\s(\w+_R\w+\s)?\w+_J\w+\sto_TO

be (not much) afraid of
\w+_VB\w+\s(\w+_XX\s)?(\w+_R\w+\s)?\w+_J\w+\sof_IO

be of great importance
\w+_VB\w+\sof_IO\s(\w+_J\w+\s)?\w+_NN\w+

is not very carefully reading
\w+_VB\w+\s(\w+_XX\s)?(\w+_R\w+\s)*\w+_V\wG

enjoy doing[FONT=宋体]结构[/FONT]
\w+_VV\w\s\w+_V\wG
 
回复: 请教关于重复的正则表达式

如果people要重复最少一次,虽多5词则为:\speople\s{1,5}.一下是常见正则表达式方法:
[FONT=宋体]正则表达式重复指示符[/FONT]
[FONT=宋体]正则表达式的另外一个强大的功能是重复匹配的能力。前述的任何一种“原子”之后,都可以指定一个重复指示符。下面列出各种重复指示符:[/FONT]

? [FONT=宋体]表示前一“原子”可有可无[/FONT]([FONT=宋体]重复[/FONT]0[FONT=宋体]或[/FONT]1[FONT=宋体]次[/FONT])[FONT=宋体]。例如[/FONT]
[FONT=宋体]“我们[/FONT]?[FONT=宋体]”匹配“我”或“我们”;[/FONT]

+ [FONT=宋体]表示前一“原子”至少匹配一次。例如“[/FONT]\w+[FONT=宋体]”匹[/FONT]
[FONT=宋体]配任何一个无符号整数;[/FONT]

* [FONT=宋体]表示前一“前子”重复匹配[/FONT]0[FONT=宋体]或多次。例如“[/FONT]\w*[FONT=宋体]”[/FONT]
[FONT=宋体]表示许多高级语言对“变量”的定义:以字母或下划[/FONT]
[FONT=宋体]线开头,后接任意多个字母数字或下划线;[/FONT]
[FONT=宋体]正则表达式特殊字符[/FONT]
\ [FONT=宋体]将其后的字符变成特殊字符[/FONT]
* [FONT=宋体]匹配它前面的字符[/FONT]0[FONT=宋体]次或多次[/FONT]
+ [FONT=宋体]匹配它前面的字符[/FONT]1 [FONT=宋体]次或[/FONT]n [FONT=宋体]次。等价于[/FONT]{1,}
? [FONT=宋体]匹配它前面的字符[/FONT]0 [FONT=宋体]次或[/FONT]1 [FONT=宋体]次,即可有可无[/FONT]
. ([FONT=宋体]小数点[/FONT])[FONT=宋体]匹配除换行符外的所有单个的字符[/FONT]
x|y [FONT=宋体]匹配’[/FONT]x[FONT=宋体]’或者’[/FONT]y[FONT=宋体]’[/FONT]
{n} [FONT=宋体]这里的[/FONT]n [FONT=宋体]是一个正整数。匹配前面的[/FONT]n [FONT=宋体]个字符。[/FONT]
{n,} [FONT=宋体]这里的[/FONT]n [FONT=宋体]是一个正整数。匹配至少[/FONT]n [FONT=宋体]个前面的字符。[/FONT]
{n,m} [FONT=宋体]这里的[/FONT]n [FONT=宋体]和[/FONT]m [FONT=宋体]都是正整数。匹配至少[/FONT]n [FONT=宋体]个最多[/FONT]m [FONT=宋体]个前面的字符。[/FONT]
[xyz] [FONT=宋体]一字符列表,匹配列出中的任一字符。你可以通过连字符‐指出一个字符范围。[/FONT]
\d [FONT=宋体]匹配一个数字,等价于[/FONT][0-9][FONT=宋体]。[/FONT]
\D [FONT=宋体]匹配任何的非数字,等价于[/FONT][^0-9][FONT=宋体]。[/FONT]
\n [FONT=宋体]匹配一个换行符[/FONT]
\r [FONT=宋体]匹配一个回车符[/FONT]
\s [FONT=宋体]匹配一个单个[/FONT]white [FONT=宋体]空格符,包括空格,[/FONT]tab[FONT=宋体],换行符[/FONT]
\S [FONT=宋体]匹配除[/FONT]white [FONT=宋体]空格符以外的一个单个的字符[/FONT]
\w [FONT=宋体]匹配所有的数字和字母以及下划线,等价于[/FONT][A-Za-z0-9_][FONT=宋体]。[/FONT]
\W [FONT=宋体]匹配除数字、字母外及下划线外的其它字符,等价于[/FONT][^A-Za-z0-9_][FONT=宋体]。[/FONT]
^ [FONT=宋体]表示匹配的字符必须在最前边。[/FONT]
$ [FONT=宋体]与[/FONT]^[FONT=宋体]类似,匹配最末的字符。[/FONT]
[^0[FONT=宋体]‐[/FONT]9] [FONT=宋体]匹配[/FONT]0-9[FONT=宋体]之外的任何一个字符[/FONT]
[^a[FONT=宋体]‐[/FONT]z] [FONT=宋体]匹配[/FONT]a-z[FONT=宋体]之外的任何一个字符[/FONT]

[FONT=宋体]一些正则表达式的例子[/FONT]
\w+ = any word
? = [FONT=宋体]前面的东西可有可无[/FONT]
\s = Space
[FONT=宋体]类似[/FONT]the new schools/a good teacher[FONT=宋体]这样的结构[/FONT] (\w+_AT1?\s+)?(\w+_J\w+\s+)?(\w+_N\w+\s)+


-ing[FONT=宋体]形式:[/FONT]\w+_V\wG VDG = doing
[FONT=宋体]副词:[/FONT]\w+_R\w+
[FONT=宋体]否定词:[/FONT]\w+_XX
have[FONT=宋体]的各种形式:[/FONT]\w+_VH\w
be[FONT=宋体]动词:[/FONT]\w+_VB\w+
[FONT=宋体]形容词:[/FONT]\w+_J\w+
[FONT=宋体]不定式标记[/FONT]to[FONT=宋体]:[/FONT]to_TO
[FONT=宋体]介词[/FONT]of[FONT=宋体]:[/FONT]of_IO it[FONT=宋体]或[/FONT]IT: it_PPH1
[FONT=宋体]空格:[/FONT]\s [FONT=宋体]多个空格:[/FONT]\s+
[FONT=宋体]实义动词:[/FONT]\w+_VV\w
+ 1[FONT=宋体]次或更多[/FONT]
* 0[FONT=宋体]次或更多[/FONT]

it is very easy to do sth/it has been easy to do
it_PPH1s(\w+_VH\w\s)?(\w+_XX\s)?\w+_VB\w+\s(\w+_R\w+\s)?\w+_J\w+\sto_TO

be (not much) afraid of
\w+_VB\w+\s(\w+_XX\s)?(\w+_R\w+\s)?\w+_J\w+\sof_IO

be of great importance
\w+_VB\w+\sof_IO\s(\w+_J\w+\s)?\w+_NN\w+

is not very carefully reading
\w+_VB\w+\s(\w+_XX\s)?(\w+_R\w+\s)*\w+_V\wG

enjoy doing[FONT=宋体]结构[/FONT]
\w+_VV\w\s\w+_V\wG

很好! 但,是"原创"还是 "援引", 能给个出处吗?特别是后半部. 谢谢!
 
回复: 请教关于重复的正则表达式

后半部分,是我在某个场合写的。竟有人不问对错,不加核对,不注明,就贴上来。
 
回复: 请教关于重复的正则表达式

正则表达式检索还有一个问题需要注意:
比如文本是:A A A A A
要检索 A A 组合的个数 一般的正则表达式只能检索出2个结果即: (A A) (A A) A
而实际上应该是4个结果。PHP,Ruby,Perl自带的正则表达式都只能检索出2个结果,要检索出4个结果,需要干预正则表达式的步长(offset)。
 
回复: 请教关于重复的正则表达式

后半部分,是我在某个场合写的。竟有人不问对错,不加核对,不注明,就贴上来。
谢谢!有点看不明白,所以就提问了. 继续学习中.....:p
 
Back
顶部