为什么这个正则表达式可以在有或没有转义的连字符/破折号的情况下工作?

Why does this regex work with and without hyphens / dashes escaped

本文关键字:连字符 破折号 工作 情况下 转义 正则表达式 为什么      更新时间:2023-09-26

给定以下字符串:

blablabla
X-FOO-BAR:blaaaa
blafoobla

这两个正则表达式都删除了第二行

  1. s/X-FOO-BAR.*?$//gismo

  2. s/X'-FOO'-BAR.*?$//gismo

我不完全理解为什么没有连字符的正则表达式在这种情况下工作。有人能帮我澄清一下吗?我已经测试了它在perl和javascript正则表达式引擎。

干杯!

当连字符不在字符类中时,不需要转义。在字符类中,必须将连字符放在开头或最后。但是如果你把它放在中间,转义可能起作用,也可能不起作用。