Regex Bash脚本中的正则表达式
你好,很棒的社区 说到正则表达式,我完全是个笨蛋。我已经推迟了学习。。现在我的懒惰已经追上了我 我想做的事:Regex Bash脚本中的正则表达式,regex,linux,bash,expression,Regex,Linux,Bash,Expression,你好,很棒的社区 说到正则表达式,我完全是个笨蛋。我已经推迟了学习。。现在我的懒惰已经追上了我 我想做的事: 检查字符串是否与此格式匹配: 10_06_13 即今天的日期,或与“2digits\u2Digits\u2Digits”类似的日期 我所做的: regex='([0-9][0-9][_][0-9][0-9][_][0-9][0-9])' if [[ "$incoming_string" =~ $regex ]] then # Do awesome stuff here fi 这
检查字符串是否与此格式匹配:
10_06_13
即今天的日期,或与“2digits\u2Digits\u2Digits”类似的日期
我所做的:regex='([0-9][0-9][_][0-9][0-9][_][0-9][0-9])'
if [[ "$incoming_string" =~ $regex ]]
then
# Do awesome stuff here
fi
这在一定程度上是可行的。但是,当传入字符串等于011\u 100\u 131
。。。它仍然通过了正则表达式检查
如果有人能帮我指出正确的方向,我将不胜感激。如果左侧的字符串与右侧的正则表达式匹配,则欢呼声将成功。如果想知道字符串是否与正则表达式匹配,需要在两侧“锚定”正则表达式,如下所示:
regex='^[0-9][0-9][_][0-9][0-9][_][0-9][0-9]$'
if [[ $incoming_string =~ $regex ]]
then
# Do awesome stuff here
fi
^
仅在字符串开头成功,而$
仅在字符串结尾成功
注:
()
,从[…]
中删除了“
=~
就会成功李>
该死,我差一点就到了!我认为“^”是排除字符。非常感谢!:)@Robbie:
^
当它是字符集中的第一件事时,表示“排除”([…]
),当它是模式中的第一件事时,表示“锚定”。否则,它只匹配^
(但并非在所有正则表达式实现中都是如此;有时它意味着“匹配行的开头”)。我同意在你习惯之前它是令人困惑的。如上所述,你可以用\
替换[\]
,而不改变正则表达式匹配的内容。请注意,下划线不需要放在方括号中<代码>\uu与[\u]
匹配相同的内容。011\u 100\u 131与您的正则表达式不匹配。011_10_131会。