我正在编写一个脚本来浏览网页并找到所有大写字母名称,等于一个数字(例如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
。我真的很感激一点帮助和清理。
答案 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包含您的输入