繁体   English   中英

Bash脚本中的正则表达式

[英]Regular Expression in Bash Script

您好,社区,

当谈到正则表达式时,我是一个完整的涂料。 我推迟了学习......现在我的懒惰已经赶上了我。

我正在尝试做什么:
检查字符串是否与此格式匹配:

10_06_13

即。 今天的日期,或与“2digits_2digits_2digits”类似的日期

我做了什么:

regex='([0-9][0-9][_][0-9][0-9][_][0-9][0-9])'
if [[ "$incoming_string" =~ $regex ]]
then
   # Do awesome stuff here
fi

这在一定程度上起作用。 但是当传入的字符串等于011_100_131 ......它仍然通过了正则表达式检查。

如果有人能帮我指出正确的方向,我将不胜感激。
干杯

=~如果左边的字符串包含右边正则表达式的匹配则成功。 如果你想知道字符串是否正则表达式匹配 ,你需要在两边“锚定”正则表达式,如下所示:

regex='^[0-9][0-9][_][0-9][0-9][_][0-9][0-9]$'
if [[ $incoming_string =~ $regex ]]
then
  # Do awesome stuff here
fi

^仅在字符串的开头处成功,而$仅在结束时成功。

笔记:

  1. 我从正则表达式中删除了不必要的() ,从[[ ... ]]删除了""
  2. bash手册的措辞很差,因为它表示如果字符串匹配=~成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM