找不到合适的正则表达式模式

时间:2016-09-01 18:03:39

标签: regex perl pattern-matching

我想写一个正则表达式来匹配每个单词:

  • 不以这2个字符串中的任何一个开始(TEMP_,TMP _)
  • 中间包含字符串:LME999
  • 不以这两个字符串中的任何一个结尾(.flag,_TEMP)
  • LME999之前和之后,字符串可以包含任何字母数字字符

我写了这个正则表达式,但它没有按预期工作

(?!TEMP_)+(?!TMP_)+(\w)+LME999+(\w)+((?!.flag)(?!_TEMP))

这是一些有效的字符串: StringLME999String

1 个答案:

答案 0 :(得分:4)

您可以使用此正则表达式:

^(?!TE?MP_).*?LME999.*$(?<!\.flag|_TEMP)

RegEx Demo

RegEx分手:

^                   # line start
(?!TE?MP_)          # negative lookahead to assert failure if starts with TMP_ or TEMP_
.*?                 # match 0 or more of any char (lazy)
LME999              # match LME99
.*                  # match 0 or more of any char 
$                   # line end
(?<!\.flag|_TEMP)   # negative lookbehind to assert failure if ends with .flag or _TEMP