我在python上使用正则表达式然后我有以下字符串,我需要解析一些像
XCT_GRUPO_INVESTIGACION_F1.sql
XCT_GRUPO_INVESTIGACION_F2.sql
XCT_GRUPO_INVESTIGACION.sql
XCS_GRUPO_INVESTIGACION.sql
我需要解析所有包含?? T的字符串,但字符串不能包含像F1
,F34
,constrains
和其他
所以我有以下模式
([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
但这包含F1
,F?
,constrains
和其他
我怎么能对正则表达式说法([a-zA-Z]).*
中没有包含f1 | f? | others_expresion_that_Iwanna
答案 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'