Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 2位数字的简化正则表达式_Regex - Fatal编程技术网

Regex 2位数字的简化正则表达式

Regex 2位数字的简化正则表达式,regex,Regex,我有一个正则表达式来匹配从01-15开始的数字,这很好 ^ ^ 0 [1-9] [[1-1 ] [05-5] $$/但我想知道是否有更好的方法来做这个< /p> 您当前的模式有时会匹配字符串中间的数字(而不是只匹配只由所需的数字格式组成的完整字符串)。当您想要替换,但同时使用^和$锚定时,请在组内替换 另外,[1-1]是多余的-您可以只使用1,不需要字符集。此外,将相同的^或$锚相邻放置与仅放置其中一个锚相同,因此不要将它们重叠放置 ^(?:0[1-9]|1[0-5])$ 这里有一种不同的方

我有一个正则表达式来匹配从
01-15开始的数字,这很好

<代码> ^ ^ 0 [1-9] [[1-1 ] [05-5] $$/<代码>但我想知道是否有更好的方法来做这个< /p> 您当前的模式有时会匹配字符串中间的数字(而不是只匹配只由所需的数字格式组成的完整字符串)。当您想要替换,但同时使用
^
$
锚定时,请在组内替换

另外,
[1-1]
是多余的-您可以只使用
1
,不需要字符集。此外,将相同的
^
$
锚相邻放置与仅放置其中一个锚相同,因此不要将它们重叠放置

^(?:0[1-9]|1[0-5])$

这里有一种不同的方法。
关心表现吗?这是最快的方法
因为它没有分组,这是一个额外的步骤

^0[1-9]$^1[0-5]$

基准

 Regex2:   ^0[1-9]$|^1[0-5]$
 Completed iterations:   50  /  50     ( x 1000 )
 Matches found per iteration:   15
 Elapsed Time:    0.91 s,   912.12 ms,   912121 µs
 Matches per sec:   822,259

我的意思是,如果您不想捕获:
^(0[1-9]| 1[0-5])$
(:0[1-9]| 1[0-5])$

()
是确保
0[1-9]
路径不声明
^
所必需的

你可以在家里试试


但请注意,不同语言的语法和实现可能不同。

谢谢您的回答,但如果是从01-15开始,这很好:
^0[1-9]|[1-1][0-5])$
它们之间的所有数字都匹配。这看起来是正确的,或者可以简化?您应该只在组内进行替换,因为看起来您只希望在字符串或行的开头到结尾进行匹配。仅匹配单个字符的字符集也是多余的。请坚持使用此
Regex:^(?:0[1-9]| 1[0-5])$Options:完成的迭代:每次迭代找到50/50(x 1000)个匹配:15经过的时间:0.98秒、983.11毫秒、983113微秒匹配:762882
或,这一个稍微快一点的
Regex:^(?:0\d(?完成的迭代:每次迭代找到50/50(x 1000)个匹配:15经过的时间:0.96秒、964.21毫秒、964206µs每秒匹配:777842
当然最快的可能是完全摆脱组语法,试试这个
Regex:^0[1-9]$^1[0-5]$Options:完成的迭代:每次迭代找到50/50(x 1000)个匹配项:15个运行时间:每秒0.91秒、912.12毫秒、912121微秒匹配项:822259