这?匹配器与模式|空

The ? matcher vs pattern| empty

本文关键字:模式      更新时间:2023-09-26

我一直在练习正则表达式,遇到了这个问题。

火柴:

  • 战斧
  • 劈开斧
  • 镐头

我使用以下方法得出了一个解决方案:

(battle|splitting|pick)('s|)axe

建议的解决方案是:

(battle|splitting|pick)'s?axe

在我的原始解决方案中,"OR"运算符如何工作?当我在没有两个表达式的情况下在 javascript 中运行标准 OR 运算符时,它会抛出错误。

是:

(pattern|)

相当于:

pattern?

(pattern|)在我的第一个解决方案中如何工作?

在我的原始解决方案中,"OR"运算符如何工作?当我在没有两个表达式的情况下在 javascript 中运行标准 OR 运算符时,它会抛出错误。

正则表达式运算符不像 || 那样是 JS 运算符。空字符串是有效的正则表达式,可以用作 Alternation 运算符的操作数。

(pattern|)等同于pattern?

不完全是,第一个中还有一个额外的捕获组。但是它们在匹配的语言方面的工作方式相同,是的。