Regex 与字符串匹配的正则表达式

Regex 与字符串匹配的正则表达式,regex,grep,Regex,Grep,我需要一个只匹配字符串“MachineABC”和“MachineABCTest”的正则表达式 我试过这样的表达:MachineABC[“Test”]*。但它并没有像预期的那样工作。对于这种情况,什么是正确的正则表达式 我在用grep工具进行测试。例如:echo“MachineABCTest”| grep“MachineABC[“Test”]+”。 示例grep返回null。正则表达式应该是: ^MachineABC(Test)?$ 如果要使任何零件成为可选零件,只需将其与?通知程序组合,使其成

我需要一个只匹配字符串“MachineABC”和“MachineABCTest”的正则表达式

我试过这样的表达:MachineABC[“Test”]*。但它并没有像预期的那样工作。对于这种情况,什么是正确的正则表达式

我在用grep工具进行测试。例如:echo“MachineABCTest”| grep“MachineABC[“Test”]+”。 示例grep返回null。

正则表达式应该是:

^MachineABC(Test)?$
如果要使任何零件成为可选零件,只需将其与
通知程序组合,使其成为可选零件(1或0个匹配项)

使用egrep进行测试:

echo "MachineABCTest" | egrep '^MachineABC(Test)?$'
MachineABCTest

echo "MachineABC" | egrep '^MachineABC(Test)?$'
MachineABC

^
是行开始,
$
是行结束锚。请解释为什么从结尾删除“$”会导致表达式与“MachineAbest”匹配?“?”操作员是否对可选部件负责?在哪个示例中,您希望删除
$
(示例1或2?
(测试)?
这意味着
0
1
命中
测试
,因此,删除
$
将在
MachineABC
egrep匹配该行并在找到匹配项时打印该行后使任何ting工作。使用
$
的一个更好的例子是:
echo“MachineABC123”| egrp-o'^MachineABC(Test)?$”
无法匹配,但在这里
echo“MachineABC123”| egrp-o'^MachineABC(Test)?
将使匹配成功。