正则表达式不包含特定模式python

时间:2015-04-28 16:26:07

标签: python regex

我在python上使用正则表达式然后我有以下字符串,我需要解析一些像

XCT_GRUPO_INVESTIGACION_F1.sql
XCT_GRUPO_INVESTIGACION_F2.sql
XCT_GRUPO_INVESTIGACION.sql
XCS_GRUPO_INVESTIGACION.sql

我需要解析所有包含?? T的字符串,但字符串不能包含像F1F34constrains和其他

这样的字符串

所以我有以下模式

([a-zA-Z][a-zA-Z][tT]_([a-zA-Z]).*.(sql|SQL)$)

[a-zA-Z][a-zA-Z][tT]_ =检查第一个和第二个值可能是什么,但我需要t_T_

([a-zA-Z]).* =任何值a-z和A-Z

(sql|SQL)$ =必须以sql或SQL结尾

我得到像

这样的东西
ICT_GRUPO_INVESTIGACION_F1.sql
ICT_GRUPO_INVESTIGACION_F2.sql
ICT_GRUPO_INVESTIGACION.sql

但这包含F1F?constrains和其他

我怎么能对正则表达式说法([a-zA-Z]).*中没有包含f1 | f? | others_expresion_that_Iwanna

1 个答案:

答案 0 :(得分:0)

这个正则表达式应该有效:

([a-zA-Z][a-zA-Z][tT]_(?:(?!_F[0-9]).)*?\.(sql|SQL))

您可以在(?!_F[0-9]|other_expression|...)

添加任意数量的不需要的组合

正则表达式中有以下部分:

[a-zA-Z]         #match any letter
[a-zA-Z]         #match any letter
[tT]_            #match 't_' or 'T_'
(?:              #start non-capturing group
  (?!_F[0-9])    #negative lookahead, asserts that what immediately          
                 #follows the current position in the string is not _f[0-9]
  .              #match any single character
)*?              #end group, repeat it multiple times but as few as possible
\.               #match period character
(sql|SQL)        #match 'sql' or 'SQL'

您可以找到其他信息hereherehere