我正在尝试为特殊情况开发正则表达式:
它应该接受由'分隔的字符串。' (点):
- 前四部分始终是STG.FTG.ADG.Common
- 第五部分可以是由'分隔的一个或多个单词(字母数字),因此它可以是ABC,ABC.DEF.G,但它不能是三个字符串之一(IMAP) | SMTP | POP3)
- 第六部分是以下3个字符串之一(IMAP | SMTP | POP3)
- 第七,最后,部分是一个单词(字母数字)
我想出了这个:
^STG\.FTG\.ADG\.Common\.(?!>IMAP|SMTP|POP3)(?:[a-zA-Z0-9]+\.)*?(?:IMAP|SMTP|POP3)(?:\.[a-zA-Z0-9]+)$
并使用以下示例对其进行测试:
- STG.FTG.ADG.Common.Testing.test.IMAP.word
- STG.FTG.ADG.Common.Testing.test.IMAP
- STG.FTG.ADG.Common.Testing.IMAP.word
- STG.FTG.ADG.Common.Testing.IMAP.IMAP.word
- STG.FTG.ADG.Common.Components.IMAP STG.FTG.ADG.Common.IMAP.test
- STG.FTG.ADG.Common.IMAP.Tasdfa1566asdflksjad STG.FTG.ADG.Common.IMAP
第2,第4,第5和最后一个例子不应该被验证,除了被认为匹配的第4个(STG.FTG.ADG.Common.Testing.IMAP.IMAP.word)之外都不是,但是它不可能因为它有IMAP,它属于下一个元素。
关于如何解决此问题的任何想法?
谢谢