正则表达式用于百分号之间的大写和下划线

时间:2015-06-14 04:10:23

标签: python regex

正则表达从未成为我的强项。在python中,我试图构建一个匹配子串的表达式,如:

%MATCH%

%MATCH_1%

$ THIS_IS_A_MATCH%

它将由%MATCH%这样提取或%LIKE_THIS%

我最终得到了这个(逻辑上,但似乎不起作用):%[A-Z0-9_]*$%

那我在哪里错了?

1 个答案:

答案 0 :(得分:3)

您可以使用这样的简单正则表达式:

[%$]\w+[%$]   <-- Notice I put $ because of your sample

另一方面,如果你只想要大写,你可以使用:

[%$][A-Z_\d]+[%$]

如果您只想匹配%内的内容,您还可以使用:

%.+?%

Python代码

import re
p = re.compile(ur'[%$]\w+[%$]')
test_str = u"%MATCH%\n\n%MATCH_1%\n\n$THIS_IS_A_MATCH%"

re.findall(p, test_str)

顺便说一句,你的正则表达式的问题如下:

%[A-Z0-9_]*$%
           ^--- Remove this dolar sign