你有一个问题,决定使用正则解决,现在你有两个问题了?!

2022-08-29 10:13:00 +08:00
 jurassic2long

工作多年,每次使用正则表达式都要测试好几次才敢用。 大家来分享一下自己使用正则的技巧, 或者分享遇到的大坑,让大家乐呵乐呵~

5237 次点击
所在节点    程序员
37 条回复
BingoXuan
2022-08-29 10:17:15 +08:00
复杂的匹配都是先匹配一次,把匹配结果再进行匹配
seers
2022-08-29 10:17:43 +08:00
我能用逻辑判断的还是避免写正则,有时候自己写的过两个月自己都看不懂
murmur
2022-08-29 10:17:57 +08:00
能用库尽量用库,比如 html 标签过滤这些,有的时候正则写复杂需求就是想 shi
Kasumi20
2022-08-29 10:24:07 +08:00
具体说说这个问题,我很好奇怎么变成两个问题的
loading
2022-08-29 10:25:37 +08:00
除非有极致的性能要求(正则也不见得比很多 if 要快),或者非常简单或常见的情况,不然我一般不会用正则。

因为我还会遇到另外两个问题:
1.太久没用又要学一次,doge 。
2.没写注释,看不懂了。
lixinrui000
2022-08-29 10:27:18 +08:00
我一般用 regex101 测试好再贴到代码里
jurassic2long
2022-08-29 10:31:30 +08:00
@Kasumi20 第二个问题是:怎么用正则表示第一个问题。


@loading 太真实了,用一次学一次。


@seers
@murmur 我的需求一般是字符串格式判断和提取,最近一次忘了写非贪婪匹配的? 就悲剧了
gromit1337
2022-08-29 10:45:29 +08:00
nuk
2022-08-29 12:02:26 +08:00
正则主要就字符串匹配和捕捉,复杂一点的就用 lpeg ,好用到飞起。
devswork
2022-08-29 12:28:41 +08:00
https://regexper.com/ 用这个,正则表达式图形化
Natumsol
2022-08-29 12:47:55 +08:00
HankAviator
2022-08-29 12:51:01 +08:00
@loading 正则不是效率比较差吗
Cat7373
2022-08-29 12:54:55 +08:00
正则很容易的🐶
imn1
2022-08-29 13:08:45 +08:00
我发觉很多时候给别人答案是正则时,对方甚少接受的
正则我很常用,因为平常文件改名、搜索文件、搜索文本……就在用,最小的频率也不低于 1 次 /2 天,所以大部分都能读懂和手写


@HankAviator #12
跟纯 string 函数比,是效率低,但也是次数少的情况,但其他场景就不一定了
1. 要好几个甚至非常多字符串函数组合的情况
2. 需要泛匹配的情况
3. 数量巨大,例如十万或百万 html 匹配,用正则比 DOM 效率高很多
ikaros
2022-08-29 14:56:46 +08:00
能不用就不用, 每次都要重新去看一下语法, 然后过几天又忘了
herozzm
2022-08-29 14:57:41 +08:00
regex101 是神器,测试通过就可用了
zifangsky
2022-08-29 15:52:29 +08:00
写完之后在文本编辑器中多测试一下不同场景( PS:现在主流的文本编辑器基本都可以测试正则表达式匹配),基本就没啥问题了
Jooooooooo
2022-08-29 15:53:39 +08:00
你想写一个匹配邮箱的正则, 结果发现茫茫多的边缘 case

比如 1@1 是合法的邮箱吗?
HikariLan
2022-08-29 15:55:16 +08:00
@lixinrui000 regex101 是我个人觉得最好的正则表达式解析网站了
bulay
2022-08-29 17:03:29 +08:00
写正则到还好吧.最坑的是遇见过正则死循环.程序跑半天不结束,cpu 跑满.
具体原因也不知道为啥,去掉 * 号重写就好了

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

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

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

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

© 2021 V2EX