作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用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/
我是一名优秀的程序员,十分优秀!