我理解基本的正则表达式,但是当我看到这样的
时/^(28|29|[3-5][7]*[0-9])$/
我无法破译过去某一点意味着什么。我得到的一切都是分开的,但是对我来说没有意义,我也不明白asterik在这个背景下的意思。谁能解释一下?
答案 0 :(得分:7)
/^(28|29|[3-5][7]*[0-9])$/
首先分开管道,使其匹配:
/^28$/
,/^29$/
或/^[3-5][7]*[0-9]$/
前两个非常明显,无论是28还是29,其他任何东西都不匹配,所以在第三个:
^[3-5]
从数字3,4或5开始
[7]*
后跟0-无限量的七人制,直到[0-9]$
,这意味着结束
一个数字,包括0到9之间。
答案 1 :(得分:4)
我已经打破了正则表达式并添加了大量的空格和注释来解释它。
^ # Match beginning of string
( 28 # Start group. Match 28
| 29 # OR 29
| [3-5] # OR a single digit in the range 3-5
[7]* # then the digit 7, any number of times
[0-9] # then a single digit in the range 0-9
) # end group
$ # match end of string
来自http://www.regular-expressions.info/repeat.html
的*
的解释
星号或星号告诉引擎尝试将前一个标记匹配零次或多次。
然后继续
加号告诉引擎尝试匹配前一个令牌一次或多次。
<[A-Za-z][A-Za-z0-9]*>
匹配没有任何属性的HTML标记。尖括号是文字。第一个字符类匹配一个字母。第二个字符类匹配字母或数字。这位明星重复了第二个角色。因为我们使用了星号,所以如果第二个角色类没有匹配则可以。因此,我们的正则表达式将匹配<B>
之类的标记。匹配<HTML>
时,第一个字符类将匹配H
。星号将使第二个字符类重复三次,每一步都匹配T
,M
和L
。
方括号(字符类,[...]
)在http://www.regular-expressions.info/charclass.html
使用“字符类”,也称为“字符集”,您可以告诉正则表达式引擎只匹配多个字符中的一个。只需将要匹配的字符放在方括号中即可。如果要匹配a或e,请使用
[ae]
。您可以在gr[ae]y
中使用此选项来匹配gray
或grey
。如果您不知道您正在搜索的文件是用美国英语还是英国英语写的,那么非常有用。字符类仅匹配单个字符。
gr[ae]y
与graay
,graey
或任何此类内容不匹配。字符类中字符的顺序无关紧要。结果完全相同。您可以在字符类中使用连字符来指定字符范围。
[0-9]
匹配0到9之间的单个数字。您可以使用多个范围。[0-9a-fA-F]
匹配单个十六进制数字,不区分大小写。您可以组合范围和单个字符。[0-9a-fxA-FX]
匹配十六进制数字或字母X.同样,字符和范围的顺序无关紧要。
答案 2 :(得分:3)
此正则表达式匹配:
28
OR
29
OR
3, 4 or 5
optionally followed by 0 or more 7's
followed by a number from 0-9
答案 3 :(得分:2)
当然:
/^
表示行或字符串的开头
(28|29|[3-5][7]*[0-9])
分为:
$/
表示行或字符串的结尾
所以*
表示任意数量的重复。
对于像这样的问题,我强烈推荐像Expresso这样的程序。
答案 4 :(得分:2)
括号正在创建一个组。管道分隔可能的子匹配(“OR”)。星号等于{0,}
,表示:尽可能多的出现次数。
/^(28|29|[3-5][7]*[0-9])$/
^ Start of string
(...) Either:
28 OR
29 OR
[3-5] One digit, 3-5 followed by
[7]* any occurrence of 7, followed by
[0-9] One digit
$ End of string
答案 5 :(得分:1)
重复前一项零次或多次。贪婪,因此在尝试使用前一项目的匹配较少的排列之前,将匹配尽可能多的项目,直到前一项目根本不匹配为止。
重复前一项零次或多次。懒惰,所以引擎首先尝试跳过上一个项目,然后尝试使用前一项的不断增加的匹配进行排列。
有关详细信息,请参阅此URL:
答案 6 :(得分:1)
/^(28|29|[3-5][7]*[0-9])$/
将匹配数字输入如下:
答案 7 :(得分:1)
这个正则表达式意味着允许的数字如:
[3-5]
)的数字开头的数字的数量>&gt; = 0的7([7]*
),然后是0到9的数字({{1} })