正则表达式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 易读方面相对 ?<= 这样的符号,API 命名的语义更明确可以省去正则表达式语法相关字符需要的反斜杠明确运算优先级,比如 | 和 (?2.2 易写方面
借助 IDE 的辅助,可看到各接口和常量,可以省去记忆各种符号。下面是安装了此插件的效果:
2.3 潜在问题如需跨编程语言使用,需移植该 APIAPI 的表达往往比原本正则表达式冗长,需在可读与篇幅之间寻求平衡API 的命名需要尽量准确简约,如果不与正则表达式语法一一对应,使用时可能需要更多适应3 设计3.1 大致思路尽可能减少底层 API 的数量,尽量保持与正则表达式语法的一一对应。至于有些符号如 ^ ? 等等,一个有多种用处,需酌情看是否能合并到一个 API。与 1 相关,底层 API 的功能尽量简单,不包含优化或者复杂的转换。命名风格上,尽量使用两字或四字中文3.2 正则常用语法的对应 API 示例
下面使用"规律"的缘由见此答:正则表达式是什么?abc
一个("abc")( 规律 )
分组(规律)规律1 | 规律2
皆可(规律1, 规律2)^, $
开头, 结尾规律 *
几个(规律)规律 +
最少一个(规律)规律 {m}
重复(规律, m)规律 {m, n}
重复(规律, m, n)规律 ?
最多一个(规律)规律 *?
最小匹配(几个(规律))规律 +?
最小匹配(最少一个(规律))规律 {m, n}?
最小匹配(重复(规律, m, n))[abc0-9]
某字("abc", 数字)。这里原本也用"一个"命名,但 一个("abc") 就有了歧义(与上面第一个语法)[^abc]
不是("abc")规律2 (?= 规律1)
规律2.后面是(规律1)规律2 (?! 规律1)
规律2.后面不是(规律1)(?<= 规律1) 规律2
规律2.前面是(规律1)(?规律2.前面不是(规律1)
欢迎意见建议。
学习强国四人赛试题15道(47)第1题机器人身上携带的各种就相当于人的眼睛和耳朵等器官,通过它可以接收周围环境的信息。来源十万个为什么(第六版)(上海世纪出版股份有限公司少年儿童出版社2014年版)出题学习强国学
5款新机遭曝光有的多次暗示,有的已经官宣做等等党真的需要一定程度的耐心,当一款新机发布之后,真的需要做出要不要换机的打算,然后有可能会觉得下一款新机会更强,那么一来一回,用户的选择也就会变得异常纠结。而从目前的市场角度来
又一大厂入局折叠屏?vivo或于5月发布新机从拼参数拼堆料,再到争相入局折叠屏,手机圈内的竞争已经全面步入白热化。日前,继华为小米荣耀OPPO后,vivo也被指正研发折叠屏旗舰手机,目前已处于最后的攻坚阶段,有望于2月28日
坐火车没有身份证怎么办?谢邀。现在坐火车没有身份证很好解决。现在火车票都是实名制,如果不小心忘带身份证了,那么,可以去车站的窗口来一个临时身份证明,那样就可以乘车了。这个证明我开过一次,那次是赶早上七点的
我爱拼多多女生最喜欢玩的游戏是什么?购物!!!拆快递属于最快乐的时光,可以让人暂时忘记所有的烦恼。买买买最治愈。可是,对于经济能力有限,尤其是像我这样,近一年来收入水平腰斩,创收前景也不明朗
非洲将建首座毫米波段射电望远镜如今,非洲和欧洲的天文学家对非洲第一座毫米波段射电望远镜即将建成的消息反应热烈。非洲毫米波段射电望远镜是一台15米单口径射电望远镜,可以接收和分析约1毫米长的无线电波,计划在纳米比
好代码的味道战略篇如何写出好的代码,是一个比较宏大的命题,系列文章尝试从战略和战术两个层面进行描述。以下是正文部分编程如写作时至今日,代码最最重要的属性是作为程序员之间用于沟通和交流思想的语言。也就
收入与付出不成正比,今日头条值不值得留下?单从付出与收入相比,今日头条不值得留下,我举几个例子说说收入与付出的比值(1)今日头条极速版,刷金币得收入,三万三千金币1元钱,签到,三餐吃饭,睡觉,运动走步,开宝箱,看文章,看置
数字经济为冬奥会提供强大支撑来源经济日报经济日报北京2月11日讯(记者李佳霖)数字化是北京2022年冬奥会的一大特点。正是数字技术的支撑,让运动健儿的训练方案更科学,让各项赛事的实况转播更高清,让冬奥商品的支
心级服务和目智能摄像头家庭贴心卫士你是否还在疑惑,为什么别人总是能捕捉到自己家萌娃或者萌宠的可爱瞬间,为什么别人家在发生危险时可以把前因后果一目了然,为什么别人可以实时跟家里人双向对话?不要急,中国移动和目C13C
小米加速清仓,曲面屏骁龙870256G无线充电,从3499跌至2299元目前小米公司热度最高的应该就是红米K50电竞版,无论是雷军,还是卢伟冰在微博都不断预热了,从官方曝光的消息来看,红米K50电竞版搭载柔性DisplayMateA柔性直屏,采用高通骁