Regex 使用重复的子模式帮助缩短正则表达式
我在正在进行的一个项目中生成了以下正则表达式,它工作得很好,但出于职业好奇心,我想知道它是否可以“压缩/缩短”:Regex 使用重复的子模式帮助缩短正则表达式,regex,Regex,我在正在进行的一个项目中生成了以下正则表达式,它工作得很好,但出于职业好奇心,我想知道它是否可以“压缩/缩短”: Regexes对我来说总是像巫毒一样 对于初学者,单字符块可能会消失: /\(PRD\).+;.+;.*;.+;.+;.*;.*;.*;/ 接下来,您可以将相关项目分组在一起: /\(PRD\)(.+;){2}.*;(.+;){2}(.*;){3}/ 不过,这实际上使它的文本长度更长 /\(PRD\).+;.+;.*;.+;.+;(.*;){3}/ 我认为你不会得到太多,也不会
Regexes对我来说总是像巫毒一样 对于初学者,单字符块可能会消失:
/\(PRD\).+;.+;.*;.+;.+;.*;.*;.*;/
接下来,您可以将相关项目分组在一起:
/\(PRD\)(.+;){2}.*;(.+;){2}(.*;){3}/
不过,这实际上使它的文本长度更长
/\(PRD\).+;.+;.*;.+;.+;(.*;){3}/
我认为你不会得到太多,也不会达成同样的规则。如果您不想让“;”之间的所有文本都是可选的,那么您可以:
/\(PRD\)(.*;){8}/
短于
/\(PRD\)((.+;){2}.*;){2}(.*;){2}/
/[(]PRD[)].+;.+;.*;.+;.+;.*;.*;.*;/
但可以说不那么可怕。两者都成功地缩短了时间
/\(PRD\)((.+;){2}.*;){2}(.*;){2}/
/[(]PRD[)].+;.+;.*;.+;.+;.*;.*;.*;/
虽然(如果只是因为角色类的更改)
或者你甚至可以和我一起去
/\(PRD\)(.+;.+;.*;){2}.*;.*;/
使用相同的规则,哪一种可能是最短的。您想要的确切模式是什么?e、 匹配结果集是什么样子的?是的,如果问题是“精确匹配这个正则表达式匹配的内容”,那么很难对其进行压缩。约翰非常擅长更优雅的方法。一些匹配内容的示例会有很大帮助。由于每次“.”都应该是“[^;]”,因此重写会变得短很多—比如比修改后的原始内容短15个字符。也可能有人认为“(…)”序列应该是“(?:…)”(非捕获分组)因为原始文件中没有任何捕获。还有一种观点认为,原版可能想要分组,但接下来的问题是,是否最好在“;”上进行拆分+1.使用相同的规则-现在,如果你稍微改变一下规则…:)