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