二维序列正则表达式(seq-re)

seq-re的Python项目详细描述


<H2>1。seq re pattern的语法

seq-re模式与python中使用的普通正则表达式(re)非常相似, 其中分隔符 […] 表示元组–序列的第二维度。

1.1内部
  • [ ]

    是元组的开始和结束分隔符,例如 […]

  • 分隔元组包含的每个元素, 尾部的连续 可以省略, 例如 [a b;x;;] [a b;x]

  • 表示一个元素的不同值,例如 a b 。 这些值形成一个集合,集合中的任何字符串都将匹配, 例如, a b 将匹配 a b

  • ^

    是元素的第一个字符, 所有不在此元素的值集中的字符串都将匹配。 如果不是元素的第一个字符, ^ 没有特殊意义。 如果 ^ 是元素的第一个字符,但它是文本字符串的一部分, ^ 应该用来转义它。

  • 上述操作的优先级:

    [ ] <; <; ^ (非文字)<; <; ^ (文字)。

  • \

    是前面提到的特殊字符之前的转义符号。 除 ] \ 以外的字符在 […] 中失去了特殊意义。 要在文字中表示 ] ,应在 ] 之前添加 \ 。 同时,为了表示 ] 之前的文本反斜杠, 应在纯文本中使用 也就是说,python代码中必须使用 '\\\'

1.2外部
  • 普通re中特殊字符的特殊含义可以在这里找到, 但有以下讨论的局限性。
    1. 不支持将 [ ] 作为特殊字符来表示一组字符。
    2. 不支持以下转义特殊字符: \number \a \b \b \d \d \s \s \w, \w \z \a \b \f \n \r \t \v \x
    3. 不支持字符范围, 如 [0-9a-za-z] [\u4e00-\u9fbb\u3007] (单字和汉字 用于普通RE。
    4. 空白和非特殊字符将被忽略。
    5. < > >
    6. 是任意元组的缩写。
    7. 模式中的命名组非常有用。 作为扩展名,可以遵循以 @ 开头的格式字符串在组名之后, 描述属于此组的元组的哪个元素将作为结果输出。 例如: (?p<;名称@d1,d2:d3>;…) , 其中 d1 d2 d3 都是元组中元素的0基位置索引数。
    8. @0,2:4 表示匹配结果中只有第0个 从元组的第2到第3个元素将被输出。
    9. @@ 表示组本身的模式将被输出,而不是匹配的结果。 您可以选择是否包含组名和括号。
    10. @ 表示将输出匹配结果中元组的所有元素。
    11. < > >

1.3 […]

中的布尔逻辑

给定一个3元组序列 [[s1,s2,s3],…

  • 以及

    [x;;y] 将匹配 s1 == x &; s3 == y 。 它的行为看起来像普通的re模式。:x.y)

  • [x;;][;;y] 将匹配 s1 = x s3= y 。 它的行为看起来像普通的re模式。X.):…Y)

  • 如果 [;^p;] 将匹配 s2 != p 。 它的行为看起来像普通的re模式。:.[^P]。

    我们也可以使用一个普通re的否定前瞻断言, 给一个否定的覆盖它的下面。 例如, (?![;p;][q])[;;][;;] <;==>; [;^p;][^q;;] , 哪些行为看起来像普通的re模式?(?)(P)?:q…)…

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本