用常规术语写一个反向引用,以确定两个数字的相等性

Write a back reference in regular terms to determine the equality of two numbers

提问人:ukjar 提问时间:4/29/2022 最后编辑:M. Justinukjar 更新时间:11/15/2023 访问量:44

问:

请说明如何在正则表达式中写入反向引用以确定两个数字的相等性。

例如,输入24和24的人出现在屏幕上“OK”,相反,当输入24和23的人收到“不好”?

我尝试了以下方法:

#!/bin/bash

read a
read b
if <("$a" == "$b")>.*<\1>
then
   echo ok
else
   echo not ok
fi
正则表达式 bash 相等性 反向引用

评论

1赞 Barmar 4/29/2022
什么是反向链接?
0赞 Barmar 4/29/2022
if [ "$a" -eq "$b" ]-- 这是基本的 shell 语法。if
0赞 ukjar 4/29/2022
正则表达式的反向链接,例如$egrep '<([A-Za-z]*)>.*</\1>'
0赞 ukjar 4/29/2022
我以这种方式尝试,如果 [ “$a” -eq “$b” ],它不起作用
0赞 Barmar 4/29/2022
我认为你的意思是反向引用。

答:

0赞 JRichardsz 4/29/2022 #1

您只需要直接进行变量比较:

#!/bin/bash

read a
read b
if [ "$a" -eq "$b" ];
then
   echo ok
else
   echo not ok
fi

enter image description here

反向引用适用于复杂的要求,如下所示:

https://javascript.info/regexp-backreferences

此外,正则表达式不用于比较不同的值。它用于将传入值与预定义的、预期的或期望的模式进行比较,如本示例所示,其中预期模式是邮件,传入值可以是任何字符串

if [[ "$1" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]
then
    echo "Email address $email is valid."
else
    echo "Email address $email is invalid."
fi