n个字符或至少m个字符的正则表达式

ray*_*ran 23 regex character

这应该是一个非常简单的正则表达式问题,但我无法在任何地方找到任何答案.如何制作一个正则表达式,它只匹配2个字符或至少4个字符.这是我目前的做法(忽略正则表达式本身,除此之外):

[A-Za-z0_9_]{2}|[A-Za-z0_9_]{4,}
Run Code Online (Sandbox Code Playgroud)

但是,这种方法花费了两倍的时间(对于400行文件,我的速度大约慢了0.3秒),所以我想知道是否有更好的方法来做到这一点?

Ama*_*dan 18

优化开始,并锚定它.

^[A-Za-z0-9_]{2}(?:|[A-Za-z0-9_]{2,})$
Run Code Online (Sandbox Code Playgroud)

(另外,你确实说要忽略正则表达式本身,但我猜你可能想要0-9,不是0_9)

编辑嗯,我确信我读到你想要匹配线.^$如果你想在线内匹配,也要删除锚点().如果你只匹配整行,锚点会加速你(好吧,前锚^将至少).