python正则表达式问题

我想在一个字符串中匹配一个数字,如下:
t=‘34’(t是变量,从文件读入的)
如果写re.compile(t)的话,1342,342 134等这些都能匹配了显然不行
然后我写成re.compile(\Dt\D),但是错误的
写成re.compile(‘\Dt\D’),匹配的是前面和后面都不是数字的't',不是想要的
本人正则刚学不久,请高手指教下啊,
最新回答
囚我在心上

2024-07-27 06:24:53

如果你确定数字前后一定有非数字字符的话,可以用 re.compile('\D({0})\D'.format(t))。否则就还要复杂点。
先是用format组成pattern。如果t=34的话,pattern就是'\D(34)\D'。你需要匹配的用括号括起来,这样后面匹配的时候可以从结果里用group读出来。例如:
pattern = re.compile('\D({0})\D'.format('34'))
m = pattern.match('abcd34efg')
print m.group(1)
结果就是34
怪性酷男人

2024-07-27 02:32:55

这个样子就完了。。。pattern = r"[^\d]+%s[^\d]"%t ;这样正则其实就是pattern = r"[^\d]+34[^\d]"
,不久符合亲一个数字t前面和后面都不是数字
谁许俄一世荒芜

2024-07-27 06:52:46

\d{2}表示两个数字啊
追问
我要匹配的是一个数字t前面和后面都不是数字啊
与我无关

2024-07-27 06:35:46

\D是指非数字的,放然不行。\d才是数字。