如何shell脚本regex完美匹配



我有一个匹配正则表达式的Bash脚本文件。

我的正则表达式脚本文件:

if [[ "$image" =~ [0-9]+(.[0-9]+){3}-[0-9]+$ ]]; then

我需要通过只匹配0.0.0.0-0000的案例

这些是我的投入和结果。

pass:0.0.0.0-0000

pass:0.0.0.0.0.0-0000<lt;不需要的匹配

编号:0.0.0.0字

编号:0.0.0.0

正如我在上面标记的,0.0.0.0.0.0-0000与我的正则表达式匹配。

我的问题是如何修改regex以仅匹配模式0.0.0.0-0000

假设您正在尝试匹配某种IP地址,如String,我会想出这个regex。

^(d+.?){4}-d+

Regex Demo

注意第一捕获组(d+.?)中的d+,其将匹配.之前的任何数字。如果唯一的起始模式是0.0.0.0,则可以删除此处的+标记以仅匹配一个数字字符。

说明:

^-捕获字符串的开始

(d+.?){4}-在捕获0.0.0.0的一行中捕获以可选.字符结尾的数字4次

-d+-捕获-字符和捕获-0000的一行中的数字序列

此问题已解决。

第四只鸟我错过了锚。若要澄清起点和终点,它应介于"^"one_answers"$"之间。

你可以参考答案

if [[ "$image" =~ ^[0-9]+(.[0-9]+){3}-[0-9]+$ ]]; @The fourth bird Jul 11 at 8:43

感谢您的重播XD

最新更新