linux - 名称检查匹配模式
问题描述
我需要帮助了解为什么代码 B 会产生不同的结果
x=TEST_DATA_12345678_TST_87456321
下面的代码(CODE A)产生正确的输出(匹配)
if [[ $x == TEST_[A-Z][A-Z][A-Z][A-Z]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_[A-Z][A-Z][A-Z]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]; then echo "match"; else echo "non match"; fi
但是,以下(代码 B)产生错误的输出(不匹配)
if [[ $x == TEST_[A-Z]{4}_[0-9]{8}_[A-Z]{3}_[0-9]{8} ]]; then echo "match"; else echo "non match"; fi
解决方案
要检查if 语句中的正则表达式,您需要使用=~
off ==
;
#!/bin/bash
x=TEST_DATA_12345678_TST_87456321
if [[ $x =~ TEST_[A-Z][A-Z][A-Z][A-Z]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_[A-Z][A-Z][A-Z]_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] ]]; then echo "match"; else echo "non match"; fi
if [[ $x =~ TEST_[A-Z]{4}_[0-9]{8}_[A-Z]{3}_[0-9]{8} ]]; then echo "match"; else echo "non match"; fi
两者都将按预期匹配。
推荐阅读
- odoo - 在 Odoo 中部分付款的汇兑损益
- c - 用于从字符串中打印单词首字母的 C 程序
- javascript - JS - 我如何遍历其他对象数组中的数组
- xml - 无法解组 XML 文件
- c++ - bigraph 与 unordered_map 匹配
- ibm-midrange - 从 AS400 将数据库文件作为 excel 邮件
- jython - Jython ValueError:chr() arg 不在范围内 (256)
- python - 从存储在数据框列中的多个 url 中提取数据
- memory-management - 如何在内核中从一个物理页面复制到另一个物理页面
- c++ - 为什么析构函数以相反的顺序调用?