我想知道逗号在正则表达式中是如何解释的。我在网上做了一些研究,希望验证我的理解,如以下片段所解释的:-
{a,b}* can mean {a+b}* and matches a,aa,b,bb,ab,abbb,aaab,ababab etc similarly, {a,aba} would match either a or aba
还是有其他的解释
olmpazwi1#
你的问题似乎涉及到 * 形式语言理论 * 中的正则表达式。在计算机编程中,我们使用regex作为正则表达式语法和语法的一个非常特殊的实现,它发展到包括不属于正则表达式理论概念的操作(参见。regular-language)。维基百科注解:短语 regular expressions 或 regexes 通常用于表示用于表示匹配文本的模式的特定标准文本语法,与数学符号不同。纯正则表达式只有三个操作符:
用于这些运算符的语法可以不同。例如,以下所有内容的含义相同,但语法规则不同:
(a+b)c*
(a|b)c*
{a,b}c*
就我个人而言,我认为大括号是一个糟糕的选择,因为它们用于表示正则语言的 * 字母表 *,即。在regex中,它们被使用as a quantifier来限制前面的模式可以重复多少次。至于你的具体问题:逗号的解释它是 alternation 运算符。在形式语言的讨论中,这个运算符通常使用+,而在计算机语言中,这个运算符通常使用符号|。
regex
+
|
1条答案
按热度按时间olmpazwi1#
你的问题似乎涉及到 * 形式语言理论 * 中的正则表达式。在计算机编程中,我们使用regex作为正则表达式语法和语法的一个非常特殊的实现,它发展到包括不属于正则表达式理论概念的操作(参见。regular-language)。
维基百科注解:
短语 regular expressions 或 regexes 通常用于表示用于表示匹配文本的模式的特定标准文本语法,与数学符号不同。
纯正则表达式只有三个操作符:
用于这些运算符的语法可以不同。例如,以下所有内容的含义相同,但语法规则不同:
(a+b)c*
(a|b)c*
{a,b}c*
就我个人而言,我认为大括号是一个糟糕的选择,因为它们用于表示正则语言的 * 字母表 *,即。在
regex
中,它们被使用as a quantifier来限制前面的模式可以重复多少次。至于你的具体问题:
逗号的解释
它是 alternation 运算符。在形式语言的讨论中,这个运算符通常使用
+
,而在计算机语言中,这个运算符通常使用符号|
。