你如何调用正则表达式的内部部分? (由分隔符分隔的那个)

How do you call the inner part of a regex? (the one delimited by the delimiters)

如何称呼正则表达式的“内部部分”没有分隔符?

例如:

给定这些正则表达式:/\d+/#(hello)# 我们可以将每个正则表达式分解为 3 个部分:

我们都将分隔符命名为 /#

你怎么称呼内部? \d+(hello) 部分?

在这个 BNF https://www2.cs.sfu.ca/~cameron/Teaching/384/99-3/regexp-plg.html referenced here 中,他们似乎将“正则表达式”称为内部部分。如果是这样,那么如何调用分隔符连接的正则表达式?

问这个的原因是清洁代码规则。我正在编写分词器,我需要用专有名称清楚地命名“完整的东西”和“内部的东西”。

regex delimiters :

<action>/<pattern>(/<substituiton>)/<modifiers>

动作

正则表达式定界符构造的这一部分包含关于正则表达式将要做什么的隐式(无字符)或显式(用字符表示)信息:匹配、替换,有时即使它将在Vim 中的整个文件。在 POSIX 工具上下文中,操作也称为 commands (or operators)。通常的动作字符是 sm 代表 ssubstitution 和 match.

模式 第二部分,你称之为 inner part - 被称为 pattern(见 perlop reference).在描述 $var =~ m/mushroom/ 表达式时,此参考解释:

The portion enclosed in '/' characters denotes the characteristic we are looking for. We use the term pattern for it.

所以,当我们说“regex”或“regexp”时,我们基本上指的是正则表达式模式

替换

这部分只存在于s替换结构中,前缀为s action/command。替换模式语法与正则表达式模式语法非常不同,因为它们通常可以包含命名或编号的反向引用、用于取消反向引用语法的转义序列(参见 "dollar escaping"),有时还包含大小写更改运算符(如 \l , \L...\E, \u\U...\E).

修饰符

另外 called flags,这些部分有助于“微调”正则表达式引擎匹配模式的过程。最常见的修饰符是 i 不区分大小写的标志,g 全局匹配标志,s singleline/dotall 使 . 跨行匹配的修饰符(在 NFA 正则表达式中其他比 Onigmo/Oniguruma,它使用 m).