【发布时间】:2021-04-13 11:39:54
【问题描述】:
我有一个字符串列表,其中每一行都是这样的:
1.alfa.america.game
我需要用不同的参数查询这一行,如果匹配,打印出来。 在这个例子中,我得到了所有有“1”和“db”的行,但也得到了其他的,即:
11.alfa.cad.base
我不想得到带有“11”或“d.b”的行,只有完全匹配。 这就是我所做的:
代码:
ID = "1"
task = "db"
environment = "a-z"
location = "a-z"
fullString = "1.alfa.america.game" #this string can change
q = re.compile(r'(['+ID+'])+.(['+task+'])+.(['+environment+'])+.(['+location+'])+.', flags=re.I | re.X)
m = q.match(fullString)
if m:
print (fullString)
提前致谢!
【问题讨论】:
-
不要使用字符类
[...] -
将
"+"放入组"()"中并像这样转义.:r'(['+ID+']+)\.(['等也删除最后一个.,因为您的数据不以@ 结尾987654329@ -
另外,您应该阅读正则表达式的文档,以便真正了解所有字符的含义docs.python.org/3/library/re.html#regular-expression-syntax
-
另外,你可以不用正则表达式
id, task, environment, location = full_string.split(".") -
@Boris。感谢您指出了这一点。当初学者需要剪一张纸而剪刀就在那儿时,他们倾向于跳到闪亮的手提钻上。