正则表达式 API 技术验证与设计细化

昨天做了个简单的技术验证,基本达到了前文设想中的效果:

self.assertEqual(一个("a").表达(), r"a")
self.assertEqual(最多一个("#34;).一个("_", 大小写英文, 中文).任意个("_", 大小写英文, 数字, 中文).表达(),
    r'$?[_a-zA-Z一-龥][_a-zA-Z0-9一-龥]*')

self.assertEqual(不是(反斜杠, 右小括号).表达(), r'[^\)]')

self.assertEqual(
    皆可(
        一个(反斜杠).一个(左小括号).分组(任意个(不是(反斜杠, 右小括号))).一个(反斜杠).一个(右小括号).表达(),
        一个(反引号).分组(任意个(不是(反引号))).一个(反引号).表达()
        ).表达(),
    r'\(([^\)]*)\)|`([^`]*)`')

下面尝试从目标、功能、具体设计等各方面做个规划(已开源在 gitee,戳文末)。

1 目标

正则表达式(regular expression)读写不易。通过此 API 生成正则表达式,对读和写两方面进行改进。

2 功能

2.1 易读方面

2.2 易写方面

借助 IDE 的辅助,可看到各接口和常量,可以省去记忆各种符号。下面是安装了此插件的效果:

正则表达式 API 技术验证与设计细化

正则表达式 API 技术验证与设计细化

正则表达式 API 技术验证与设计细化

2.3 潜在问题

3 设计

3.1 大致思路

  1. 尽可能减少底层 API 的数量,尽量保持与正则表达式语法的一一对应。至于有些符号如 ^ ? 等等,一个有多种用处,需酌情看是否能合并到一个 API。
  2. 与 1 相关,底层 API 的功能尽量简单,不包含优化或者复杂的转换。
  3. 命名风格上,尽量使用两字或四字中文

3.2 正则常用语法的对应 API 示例

下面使用“规律”的缘由见此答:正则表达式是什么?

欢迎意见建议。

展开阅读全文

页面更新:2024-05-20

标签:前文   斜杠   英文   引号   括号   大小写   中文   底层   语法   符号   最小   规律   效果   目标   功能   技术   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top