嗨,大家好我是新的正则表达式,我已经编写了正则表达式的一些模式匹配,但它是非常冗长的正则表达式,所以我希望任何人都可以帮助我优化它?
我的REGEX - >
(T)(\d{9})(T)(\s{0,19}\d{0,19}\s{0,19}[0-9DO ]\d{0,19}\s{0,19}[OD0-9 ]\s{0,19}\d{0,19}\s{0,19}\d{0,19}[0-9D ]\d{0,19})(O)(\s{0,5}\d{0,19})\b
我希望匹配的模式 - >
T062102098T0741 0361212401O
T011900571T 000007250107O1274
T065000090T203 93 5797 9O 4037
T325170628T0108626004D18O01054
T071108452T 42D896D5O 3587
T041211609T 01D1270DD4O 2721
T021407912TO9196D00580D6O 7106
T081219108T O45D936D4O 3155
T074909988T O022D853 6O 1340
模式我正在避免 - >
T071904779T154505122619 2051
T065000090T000 32 493O9O 11007
所以任何帮助都会很棒。谢谢。
答案 0 :(得分:0)
您的RegEx很好,而且可以简化(可能已经优化),如下所示:
(?x)
(
(?:T\d{9})
(?:T\s*\d{0,19}\s*[0-9DO ]\d{0,19}\s*[OD0-9 ]\s*\d{0,19}\s*\d{0,19}[0-9D ]\d{0,19})
(?:O\s*\d{0,19})
\b
)
我在您的RegEx中找到的一件事是不必要地使用(...)
。此外,使用\s{0,19}
或\s{0,5}
可以简单地写为\s*
。只有当您不限制使用0-19
次或0-5
次时,最后一次才会更好。