我在我正在处理的项目中生成了以下正则表达式,并且工作正常,但出于专业的好奇心,我想知道它是否可以“压缩/缩短”:
/[(]PRD[)].+;.+;.*;.+;.+;.*;.*;.*;/
Regexes对我来说似乎总是巫毒......
答案 0 :(得分:3)
对于初学者来说,单字符块可以消失:
/\(PRD\).+;.+;.*;.+;.+;.*;.*;.*;/
接下来,您可以将相关项目组合在一起:
/\(PRD\)(.+;){2}.*;(.+;){2}(.*;){3}/
但这实际上使文本更长。
答案 1 :(得分:3)
/\(PRD\)(.+;.+;.*;){2}(.*;){2}/
比
短/\(PRD\)((.+;){2}.*;){2}(.*;){2}/
但可以说不那么棒了。两者都成功地短于
/[(]PRD[)].+;.+;.*;.+;.+;.*;.*;.*;/
虽然(如果只是因为字符类更改)。
或者你甚至可以选择
/\(PRD\)(.+;.+;.*;){2}.*;.*;/
可能是您使用相同规则获得的最短时间。
答案 2 :(得分:2)
/\(PRD\).+;.+;.*;.+;.+;(.*;){3}/
我认为你不会获得太多收益并达到同样的规则。如果你不在乎“;”之间的所有文字可选,然后你可以:
/\(PRD\)(.*;){8}/