尽管被指示这样做,但正则表达式只与大写字母不匹配

时间:2015-08-28 15:57:50

标签: python regex

我正在编写一个脚本来浏览网页并找到所有大写字母名称,等于一个数字(例如DUP_NB_FUNC=8)。我的正则表达式必须匹配大写字母的部分似乎不能正常工作。

value = re.findall(r"[A-Z0-9_]*(?==\d).{2,}", input)
|tc_apb_conf_00.v:-:DUP_NB_FUNC=2

|:-:DUP_NB_FUNC=2

|:-:DUP_NB_FUNC=4

|:-:DUP_NB_FUNC=5

|tc_apb_conf_01.v:-:DUP_NB_FUNC=8

所需的输出应该类似于上面的内容。但是,我得到了:

|tc_apb_conf_00.v:-:=1" name="viewport"/>

|:-:DUP_NB_FUNC=2

|:-:DUP_NB_FUNC=4

|:-:DUP_NB_FUNC=5

|tc_apb_conf_01.v:-:DUP_NB_FUNC=8

根据输入,我可以看到它从=1开始找到匹配。但是,我不明白为什么因为我只在正则表达式范围内放置了A-Z。我真的很感激一点帮助和清理。

3 个答案:

答案 0 :(得分:1)

这应该是有帮助的:

[A-Z0-9_]+(?==\d).{2,}

\b[A-Z0-9_]*(?==\d).{2,}\b

但无论如何你的正则表达式很奇怪,根据你上面的要求我建议这个

[A-Z0-9_]+=\d+

而不是使用

(?==\d).{2,}:任意两个或两个以上的字母,并确保前两个字母分别是=和一个整数,

你可以使用

=\d+

答案 1 :(得分:0)

试试这个。 value = re.findall(r"[A-Z0-9_]+(?==\d).{2,}", input)

您希望区分大小写的匹配至少匹配一次,这意味着您希望零之间匹配的+量词,而不是*量词和无限次。

答案 2 :(得分:0)

我建议您定义模式并检查输入是否可用

for t in tlist:     值= re.compile(R" [A-Z0-9 _: - ] + = \ d +&#34)     JEE = value.match(I)     如果jee不是None:         打印我

tlist包含您的输入

相关问题