正则表达式从代码重复的次数

时间:2016-01-28 20:09:32

标签: python regex

您是否可以使用脚本中的值来动态告知正则表达式如何操作?

例如:

%:: %.c
    @echo making $@
    @touch $@

我一直在试图让分组工作时遇到问题

说明

我试图在文本文件中找到最常见的正则表达式重复次数,以便在文件中查找表类型数据。 我有想法制作一个像这样的正则表达式:

base_pattern = r'\s*(([\d.\w]+)[ \h]+)'
n_rep = random.randint(1, 9)
new_pattern = base_pattern + '{n_rep}'
line_matches = re.findall(new_pattern, some_text)

2 个答案:

答案 0 :(得分:2)

你的模式只是一个字符串。因此,您只需将数字转换为字符串即可。您可以使用format(例如https://infohost.nmt.edu/tcc/help/pubs/python/web/new-str-format.html)来执行此操作:

base_pattern = r'\s*(([\d.\w]+)[ \h]+)'
n_rep = random.randint(1, 9)
new_pattern = base_pattern + '{{{0}}}'.format(n_rep)
print new_pattern ## '\\s*(([\\d.\\w]+)[ \\h]+){6}'

请注意,两个第一个和最后两个花括号在新模式中创建花括号,而{0}正在被数字n_rep

替换

答案 1 :(得分:2)

你需要使用变量的值,而不是带有变量名称的字符串文字,例如:

new_pattern = base_pattern + '{' + n_cols + '}'