gpt4 book ai didi

python - 如何在 python 中使用变量作为正则表达式?

转载 作者:行者123 更新时间:2023-11-30 22:00:24 25 4
gpt4 key购买 nike

我使用re在文件中查找一个单词,我将其存储为 lattice_type现在我想使用存储在 lattice_type 上的单词制作另一个正则表达式

我尝试以这种方式使用变量的名称

pnt_grp=re.match(r'+ lattice_type + (.*?) .*',line, re.M|re.I)

在这里我寻找正则表达式 lattice_type=并存储group(1)lattice_type

latt=open(cell_file,"r")
for types in latt:
line = types
latt_type = re.match(r'lattice_type = (.*)', line, re.M|re.I)
if latt_type:
lattice_type=latt_type.group(1)

这里是我想使用包含该单词的变量在另一个文件中查找它的地方,但我遇到了问题

pg=open(parameters,"r")
for lines in pg:
line=lines
pnt_grp=re.match(r'+ lattice_type + (.*?) .*',line, re.M|re.I)
if pnt_grp:
print(pnt_grp(1))

最佳答案

只有在定义带有大量反斜杠的字符串时才需要 r 前缀,因为正则表达式和 Python 字符串语法都为反斜杠附加了含义。 r'..' 只是一种替代语法,它使得使用正则表达式模式更容易。您不必使用r'..'原始字符串文字。请参阅The backslash plague在 Python 正则表达式 howto 中了解更多信息。

所有这意味着当已经有字符串值时,您当然不需要使用 r 前缀。正则表达式模式只是一个字符串值,您可以使用普通的字符串格式或连接技术:

pnt_grp = re.match(lattice_type + '(.*?) .*', line, re.M|re.I)

我没有在上面的字符串文字中使用 r,因为表达式中没有 \ 反斜杠会导致问题。

可能需要使用 re.escape() function在您的 lattice_type 值上,如果该值可能包含正则表达式元字符,例如 .?[ 等。 re.escape() 转义此类元字符,以便仅匹配文字文本:

pnt_grp = re.match(re.escape(lattice_type) + '(.*?) .*', line, re.M|re.I)

关于python - 如何在 python 中使用变量作为正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com