正则表达式合集帖(希望本帖能存活十年以上)
欢迎大家在这篇文章下面评论留言,给出自己在日常 coding 的过程中写过的正则表达式,并给出说明和示例,注明对应的语言,如果能给出如何写出来的详细解释更好。
欢迎大家留言给出自己想要实现的正则表达式(注明语言),然后群友给 ta 解答。
欢迎大家“优化”已经留言的正则表达式。
我希望这篇文章成为所有 “讨厌” 和 “喜爱” 正则表达式的同学的聚集地,并最终能让所有人理解和熟悉正则表达式。
关于 2 和 3 ,为什么我不去问神奇的 GPT 呢
lua 语言,jdtls 取 Class 名称%[([%a%$_]?[%.%w%(%)"+,\_%[%]%s :%-@<>])%]%(jdt://1+%)测试字符 String
自从有了 ChatGPT 再也不用烦心正则怎么写了
/^(+|-)?\d+(.\d+)?(E(+|-)?\d+)?$/i我先来一个,这个表示所有 JavaScript 中的所有数字格式,可以带正负号,可以是整数,可以是浮点数,可以是带 E|e 的科学计数法格式。比如 “1” “+1” “-1” “-2.4879983487” “2.34E-2”(表示 2.34 * 10^-2 ,也就是 0.0234)“2.34e3”(表示 2340)
支持直接粘贴 chatgpt 的回答,也希望大家能帮 chatgpt 找 bug ,但我希望是 4 ,这个对大家作为 programmer 有帮助。
好酷,有空的时候欢迎给出详细的解释
/^-?\d+(.\d+)?(e-?\d+)?$/i/^-?\d+(\.\d+)?(e[+-]?\d+)?$/i #4 gpt3.5 的答案,不知道对不对
# 下面的正则是把用户输入的(无意义)大于 2 个字的重复的内容变成单个. 没想到有什么好的,简单的算法实现. 使用正则就比较简单.(python 代码)userInputText = """测试测试测试哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?"""import reregex = r"(?P
这个回答不支持开头为 “+” 的这种格式,比如 “+1”,覆盖范围不全
哈哈哈哈哈哈,你在干嘛呢?你在干嘛呢?测试!测试!
.1 似乎表示不了
还有三个特殊值 NaN +-Infinity
- 也表示不了,边界条件还是很多的
再推荐一个我一直在用的一个正则在线测试编写工具吧: regex101.com测试效果图: postimg.cc/XB0GyvM8
我觉得吧, 一定要把一个复杂的校验用一个正则写出来, 是有强迫症, 也不符合代码高可阅读性的准则把各个规则拆开校验, 性能又不会有很大的差距, 看起来还简单易懂, 后面的人改起来也方便
#5 请不要把 AI 生成的内容发送到这里 hesudu.com/about
regex.ai/
这种活交给 GPT 就挺好
(?<!\w)(err(er)?|fail(ed)?)(?!\w)一般会用来高亮日志里的错误
V2 明令禁止粘贴 AI 回复,我跑这来看你 gpt 生成的回答我为什么不直接问 gpt?
www.qaq.dad/posts/regex
存活十年?一会儿就好被封号了。。。
对于正则这种东西,你觉得 GPT 更可信还是去一个帖子里找到的更可信呢?
是正则大全不好用了吗……- any-rule - Visual Studio Marketplace- any-rule - IntelliJ IDEs Plugin | Marketplace
我歪一下,翻页了怎么找呢?
正则真的适合人读吗
ihateregex.io/此帖终结??
看标题以为你是来请客,进来才发现你只带了口锅
#29 就是, 与其在这搜, 我为什么不直接问 ai
能随便手写正则的都是怪物,能随便看懂正则的是大怪物
正则这种东西即使是自己写的一周后都看不懂
regexp^(?=^(?:幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]){14,17}$)(?=(?:.\*\[鸡条\].\*\[万筒\].\*)|(?:.\*筒.\*\[万条鸡\].\*)|(?:.\*万.\*\[筒条鸡\].\*))(?=.\*\[幺一九中\].\*)(?=^(?:(?:(?(幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]))\\k{2,3})|(?:幺鸡二条三条|一筒二筒三筒|幺万二万三万|(?:二(?\[条筒万\])三\\k 四\\k)|(?:三(?\[条筒万\])四\\k 五\\k)|(?:四(?\[条筒万\])五\\k 六\\k)|(?:五(?\[条筒万\])六\\k 七\\k)|(?:六(?\[条筒万\])七\\k 八\\k)|(?:七(?\[条筒万\])八\\k 九\\k))|(?:(?(幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]))\\k))\*(?:(?(幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]))\\k{2,3})(?:(?:(?(幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]))\\k{2,3})|(?:幺鸡二条三条|一筒二筒三筒|幺万二万三万|(?:二(?\[条筒万\])三\\k 四\\k)|(?:三(?\[条筒万\])四\\k 五\\k)|(?:四(?\[条筒万\])五\\k 六\\k)|(?:五(?\[条筒万\])六\\k 七\\k)|(?:六(?\[条筒万\])七\\k 八\\k)|(?:七(?\[条筒万\])八\\k 九\\k))|(?:(?(幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]))\\k))\*$)(?=^(?!(?:.\*(?(幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]))\\k{3}.\*){4,}).\*$)(?:(?:(?:(?:幺鸡二条三条|一筒二筒三筒|幺万二万三万|(?:二(?\[条筒万\])三\\k 四\\k)|(?:三(?\[条筒万\])四\\k 五\\k)|(?:四(?\[条筒万\])五\\k 六\\k)|(?:五(?\[条筒万\])六\\k 七\\k)|(?:六(?\[条筒万\])七\\k 八\\k)|(?:七(?\[条筒万\])八\\k 九\\k)))|((?(幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]))\\k{2,3}))\*(?:(?(幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]))\\k)(?:((?:幺鸡二条三条|一筒二筒三筒|幺万二万三万|(?:二(?\[条筒万\])三\\k 四\\k)|(?:三(?\[条筒万\])四\\k 五\\k)|(?:四(?\[条筒万\])五\\k 六\\k)|(?:五(?\[条筒万\])六\\k 七\\k)|(?:六(?\[条筒万\])七\\k 八\\k)|(?:七(?\[条筒万\])八\\k 九\\k)))|((?(幺鸡|一筒|幺万|红中|\[二三四五六七八九\]\[条筒万\]))\\k{2,3}))\*)$
匹配麻将和牌的正则表达式: dallas.lu/mahjong-regex/
简单的正则直接手写,复杂的拆成几个特例写几个子匹配,然后套个 (?: ) 和|就行了
🤣我还以为是有人挖坟贴
日麻有一套比较直观的麻将牌以字符串形式的表达方式。详见 tenhou.net/2/简单来说,麻将牌种类是索子( s )、筒子( p )、万字( m )、字牌( z ),每种各 9 张,编号 1~9 ,日麻规则有红宝牌记为 0 ( 3 红规则每种数牌的各一张 5 ,或者 4 红规则 2 张红 5 筒子)。举例来说,113479m4688p3s24z3s ,24z 分别对应南北,其他的数牌也很一目了然。在这个规则下对字符串进行解析就相对不需要做到那么复杂。回复这个是因为我在想,对于这个需求,设计的时候就不应该直接把汉字弄到判断和牌的这一步来。这样写多少有些杂耍了。而且这样的一长串正则只能做到一个功能,我如果想要计算最快听牌方式就完全不能复用其中的阶段性的结果。
不要用 \d ,用 [0-9]
哈哈哈,有锅也有菜。你是带着碗来的,结果没找到合适的菜?
如果要把 “1.” 和 “.1” 都囊括进来,感觉只能取其一
认可!能用可读性更高的代码建议用可读性更高的代码,但是这个帖子的目的不是为了强调可读性。有些场景只能使用正则表达式,这个帖子为了让会的人炫技,为了让不会的人找到可以求助的地方,看的多了就会了
抱歉忘记这一条规则了。不过我理解 ai 生成的内容主要针对的是自然语言和一些具有纯解答性质的文字,不是针对这类的讨论
都可信,如果你能读懂的话
看的多了就能看懂了
why ?
感谢认真的思考和回复
- %) ↩
刚买了台备用机,发现好多年没用安卓,都不太清楚有什么 app 可用了。 看了看一些支持 smb 的文件夹 app ,ui 丑陋倒是能忍受,但广告属实有点太多了。 有没有什么比较…
我是一个初学者,目前已经看完了 C primer plus ,但是感觉什么都做不了,想问问朋友们想学习 C 的网络、多线程、数据库、GUI 相关内容应该看点什么书 不好意思,…
pypi 包版本号一样不给传的 恶劣结果已经消除,faker.js 已经被社区挽救回来了啊 #2 那 npm 社区有采取什么措施防止(其它作者)这种情况再次发生了吗,…