gpt4 book ai didi

regex - 如何用分组解释正则表达式减法

转载 作者:行者123 更新时间:2023-12-04 17:02:14 24 4
gpt4 key购买 nike

如果有人能解释如何解释以下正则表达式,我将不胜感激;它来自 Namespaces in XML 1.0 的 W3C 引用, 并将 NCName ([4]) 定义为:

名称 - (Char* ':' Char*)/* 一个 XML 名称,减去 ":"*/

当应用于列表时,我可以理解减法,例如:

[a-z-[aeiuo]] 表示所有辅音的列表(参见 http://www.regular-expressions.info/charclasssubtract.html ),但不适用于如上所示的组(如果这是错误的术语,请道歉)。

评论表明我应该如何解释正则表达式,但我很挣扎;为什么不只是:

           Name - ( ':' ) 

如果 NCName 的意图是 Name减去':',那么为什么两边都需要零个或多个字符(我不是在问一个单独的问题,只是指出我的困惑区域)?

请提前接受我的感谢。

最佳答案

W3C发布的文档使用 EBNF Notation 的变体来描述他们标准化的语言。

它在 "6 Notation" 节中描述的XML Recommendation .

您发布的示例:

NCName ::= Name - (Char* ':' Char*)  /* An XML Name, minus the ":" */

如何阅读:
  • NCName是规则描述的对象;
  • ::=用描述它的表达式(在右边)分隔所描述对象的名称(在左边);
  • Name是一个已经被 another rule 描述过的对象;
  • -是除符号; A - BEBNF表示“匹配 A 但不匹配 B”;
  • (...) - 括号创建一个组;它们使它们内部的表达式表现为单个项目;
  • Charanother rule 已经描述的另一个对象在文档中;它基本上意味着一个Unicode字符;
  • * - 重复,匹配前一个项目零次或多次;
  • ':' - 单引号或双引号中的字符串是字符串文字;它代表自己;这里是冒号字符;

  • 放在一起,就是 NCNameName不包含 : .

    评论似乎不正确(或者可能只是措辞不当)。

    关于regex - 如何用分组解释正则表达式减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45386831/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com