大家都是怎么练习正则表达式的呢?

2018-12-28 21:55:32 +08:00
 szzhiyang

我相信,想问这个问题的 V 友不止我一个。

13007 次点击
所在节点    程序员
92 条回复
OldPanda
2018-12-29 08:26:57 +08:00
不练习,因为正则并没有那么常用,需要的时候就到 https://pythex.org/ 现拼一个
reself
2018-12-29 08:34:53 +08:00
学习编译原理。正则的三种基本运算是连接、选择和闭包,其他运算的可以视为语法糖了,虽然表达力有限,大部分需求没啥问题了。加一个非运算。
ctro15547
2018-12-29 08:48:00 +08:00
桌面常放 7 楼那张图,要用了拿出来看,找 Notepad++试一下,你说什么要判断要筛选条件?我都是 re 个大概然后交给 if:else:去干的。。
bumz
2018-12-29 09:10:15 +08:00
先学习形式语言与自动机相关理论
学到正则语言,ε-NFA,正则表达式就够了

然后可以自己用 DFA 实现一个严格线性时间的正则引擎,就像 re2

到这一步你就是世界上最懂正则表达式的人之一了

许多正则引擎还有一些扩展功能,比如 backtracking,backreference 之类的,这些扩展打破了正则语言的界限,原则上已经应该用 CFL 乃至 CSL 甚至 RE 的识别器了
bumz
2018-12-29 09:12:43 +08:00
给大家出一道题,看看你是否会写正则表达式

1) 请构造一个正则表达式,判断任意给定的数(十进制字符串)是否是 13 的倍数(如 0, 13, 26...)
2) 对于任意给定的 m (m >= 2),编写一个程序,生成一个识别 m 的倍数的数(十进制字符串)的正则表达式。
usingnamespace
2018-12-29 09:14:05 +08:00
@reself 呵呵呵 你们这些扯编译原理的什么鬼。本来人家就是一个问题,你这瞬间是两个问题了。国内有的计算机相关专业有的都直接不开编译原理了好吗?一方面主要是都上成了 parsing+汇编入门,汇编又学的不如微机。parsing 也就那样了,正则确实会有体现,但是人家的回答下这样说是不是没意义了
woodensail
2018-12-29 09:17:07 +08:00
正则基本上除了平衡组其他的都挺简单的,顶多是零宽断言那边符号组合容易忘,但是规则不难。
平衡组我是真搞不明白。
woodensail
2018-12-29 09:20:17 +08:00
@bumz 自动机……
mengyang624
2018-12-29 09:25:52 +08:00
我脑子里能记住的就只有一个 |
其他全部靠搜索、测试。。。
ioven
2018-12-29 09:26:18 +08:00
开始看了 30 分钟入门,知道大概可以解决什么问题

之后碰到问题现查解决方法,用的多了自然就记住了
DavidNineRoc
2018-12-29 09:28:36 +08:00
当初去爬妹子图片的时候现学的,现在还忘不了。你可以试试。
CallMeReznov
2018-12-29 09:57:35 +08:00
https://regexone.com/
https://regexcrossword.com/

专门有正则游戏网站的.从浅到深.
lovelybear
2018-12-29 10:04:34 +08:00
现学现卖,现用现查
koalli
2018-12-29 10:07:13 +08:00
记不住,每次要用的时候不断地猜。。。
kingwl
2018-12-29 10:12:07 +08:00
正则都可以转化成一个自动机 了解这一点之后就剩下构造状态和转移还有一点基础的语法了

就比如 @bumz 出的这个题目
Honwhy
2018-12-29 10:18:58 +08:00
我读过精通正则表达式这本书,快忘得差不多了
正则表达式有方言区别,有语言实现上的差异
kingwl
2018-12-29 10:34:10 +08:00
@Honwhy 指望背....是肯定记不住的.....
asj
2018-12-29 10:35:55 +08:00
用 vi
glouhao
2018-12-29 10:37:26 +08:00
我在火车头上练
abc635073826
2018-12-29 11:00:47 +08:00
🔍

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/522069

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX