我想了解“正则表达式”变量中存储的正则表达式(又名正则表达式)是如何工作的?
regex='^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$'
我是bash脚本的新手,并且很难用正则表达式工作!
1-9,0-9,0-4和0-5的数字至少重复两次,这造成了混乱! 谢谢!
答案 0 :(得分:4)
单独看这个部分:
[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]
这是一系列替代方案(由|
分隔),在不同的行上:
[1-9] # Matches 1-9
[1-9][0-9] # Matches 10-99
1[0-9][0-9] # Matches 100-199
2[0-4][0-9] # Matches 200-249
25[0-5] # Matches 250-255
换句话说,它匹配1到255之间的任何数字。它有点迂回,因为正则表达式没有数字概念,只有字符串。
正则表达式尝试将这些数字中的四个与句点之间的句点进行匹配,以匹配整个IPv4地址。
答案 1 :(得分:0)
看起来有人试图匹配IPv4地址。小组
([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
匹配1到255之间的数字,然后再匹配0到255之间的数字。
(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}
他们试图用点分隔四个数字。您发布的原始正则表达式并没有逃脱" .
"所以它会匹配四组之间的任何角色。从那以后,有人编辑了正则表达式以修复该角色。
正则表达式包含在^
和$
中,以确保字符串包含该字符串。 ^
匹配字符串的开头。 $
匹配结尾。