正则表达式合集帖(希望本帖能存活十年以上)
source link: https://www.v2ex.com/t/1027988
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
- 欢迎大家在这篇文章下面评论留言,给出自己在日常 coding 的过程中写过的正则表达式,并给出说明和示例,注明对应的语言,如果能给出如何写出来的详细解释更好。
- 欢迎大家留言给出自己想要实现的正则表达式(注明语言),然后群友给 ta 解答。
- 欢迎大家“优化”已经留言的正则表达式。
- 我希望这篇文章成为所有 “讨厌” 和 “喜爱” 正则表达式的同学的聚集地,并最终能让所有人理解和熟悉正则表达式。
zapper 7 小时 13 分钟前 关于 2 和 3 ,为什么我不去问神奇的 GPT 呢
|
Kaiv2 7 小时 10 分钟前 1 lua 语言,jdtls 取 Class 名称
%[([%a%$_]?[%.%w%(%)*"+,\\_%[%]%s :%-@<>]*)%]%(jdt://[^%)]+%) 测试字符 [String](jdt://xxxxxxxx) |
ShinichiYao 7 小时 10 分钟前 5 自从有了 ChatGPT 再也不用烦心正则怎么写了
|
oakland 7 小时 9 分钟前 /^(\+|-)?\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) |
oakland 7 小时 7 分钟前 @zapper 支持直接粘贴 chatgpt 的回答,也希望大家能帮 chatgpt 找 bug ,但我希望是 4 ,这个对大家作为 programmer 有帮助。
|
DavidDee 7 小时 5 分钟前 |
igeeky 7 小时 4 分钟前 # 下面的正则是把用户输入的(无意义)大于 2 个字的重复的内容变成单个. 没想到有什么好的,简单的算法实现. 使用正则就比较简单.(python 代码)
userInputText = """ 测试测试测试 哈哈哈哈哈哈哈哈哈哈哈哈 哈哈哈 你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢? """ import re regex = r"(?P<r>.{2,100}?)(?P=r){2,}" subst = "\\1" outputText = re.sub(regex, subst, userInputText, 0, re.MULTILINE) print("## input") print(userInputText) print("## output:") print(outputText) # 输出: ## input 测试测试测试 哈哈哈哈哈哈哈哈哈哈哈哈 哈哈哈 你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢?你在干嘛呢? ## output: 测试 哈哈 哈哈哈 你在干嘛呢? |
nagisaushio 6 小时 59 分钟前 via Android @oakland .1 似乎表示不了
|
nagisaushio 6 小时 56 分钟前 via Android 1 @oakland 还有三个特殊值 NaN +-Infinity
|
nagisaushio 6 小时 54 分钟前 via Android @oakland 1. 也表示不了,边界条件还是很多的
|
clue 6 小时 25 分钟前 我觉得吧, 一定要把一个复杂的校验用一个正则写出来, 是有强迫症, 也不符合代码高可阅读性的准则
把各个规则拆开校验, 性能又不会有很大的差距, 看起来还简单易懂, 后面的人改起来也方便 |
Rab 6 小时 13 分钟前 |
unco020511 6 小时 1 分钟前 这种活交给 GPT 就挺好
|
rainbowhu 5 小时 55 分钟前 1 (?<!\w)(err(er)?|fail(ed)?)(?!\w)
一般会用来高亮日志里的错误 |
ShundL 5 小时 55 分钟前 2 V2 明令禁止粘贴 AI 回复,我跑这来看你 gpt 生成的回答我为什么不直接问 gpt?
|
ae86 5 小时 54 分钟前 https://www.qaq.dad/posts/regex
|
ShundL 5 小时 53 分钟前 存活十年?一会儿就好被封号了。。。
|
icyalala 5 小时 43 分钟前 对于正则这种东西,你觉得 GPT 更可信还是去一个帖子里找到的更可信呢?
|
zzlit 5 小时 16 分钟前 我歪一下,翻页了怎么找呢?
|
Rickkkkkkk 5 小时 12 分钟前 正则真的适合人读吗
|
danhahaha 4 小时 33 分钟前 15 看标题以为你是来请客,进来才发现你只带了口锅
|
qiyilai 2 小时 36 分钟前 能随便手写正则的都是怪物,能随便看懂正则的是大怪物
|
malusama 2 小时 23 分钟前 正则这种东西即使是自己写的一周后都看不懂
|
dallaslu 2 小时 19 分钟前 ```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}))\*)$ ``` 匹配麻将和牌的正则表达式: https://dallas.lu/mahjong-regex/ |
chrawsl 2 小时 13 分钟前 简单的正则直接手写,复杂的拆成几个特例写几个子匹配,然后套个 (?: ) 和|就行了
|
areschen 1 小时 56 分钟前 1 🤣我还以为是有人挖坟贴
|
aldehyde 1 小时 56 分钟前 1 @dallaslu 日麻有一套比较直观的麻将牌以字符串形式的表达方式。详见 https://tenhou.net/2/
简单来说,麻将牌种类是索子( s )、筒子( p )、万字( m )、字牌( z ),每种各 9 张,编号 1~9 ,日麻规则有红宝牌记为 0 ( 3 红规则每种数牌的各一张 5 ,或者 4 红规则 2 张红 5 筒子)。举例来说,113479m4688p3s24z3s ,24z 分别对应南北,其他的数牌也很一目了然。在这个规则下对字符串进行解析就相对不需要做到那么复杂。 回复这个是因为我在想,对于这个需求,设计的时候就不应该直接把汉字弄到判断和牌的这一步来。这样写多少有些杂耍了。而且这样的一长串正则只能做到一个功能,我如果想要计算最快听牌方式就完全不能复用其中的阶段性的结果。 |
oakland 1 小时 4 分钟前 @nagisaushio 如果要把 “1.” 和 “.1” 都囊括进来,感觉只能取其一
|
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK