0

我正在尝试将来自用户的输入合并为正则表达式搜索的一部分。由于我只希望在特定行中搜索用户提供的模式,因此我想将提供的模式与模式组合(即连接)。在 python 中执行此操作的最佳方法是什么?

这是我的代码,目前不起作用,因为 re 似乎不支持加法运算符:

import re

q1=re.compile(r'^Organism.*')
q2=re.compile(r'(moth)')
q3=re.compile(r'.*</td>')


s="Organism: moth </td>"


test=re.search(q1+q2+q3,s).group(1)

print "test", test
4

2 回答 2

1

据我所知,编译后的正则表达式对象一旦编译就无法更改。

相反,您可以将编译延迟到用户输入之后:

import re

q1 = r'^Organism.*('
q2 = raw_input("Enter organism (e.g., moth)")
q3 = r').*</td>'


s="Organism: moth </td>"

regex = re.compile(q1+q2+q3)
test = re.search(regex,s).group(1)

print "test", test
于 2013-09-17T15:31:03.523 回答
1

显而易见的方式没有错...

import re

q1 = "^Organism.*"
q2 = "(moth)"
q3 = ".*</td>"

rx = re.compile(q1 + q2 + q3)

s = "Organism: moth </td>"
test = rx.search(s).group(1)

事实上,真的没有理由编译一次性正则表达式,只需将其用作字符串:

import re

q1 = "^Organism.*"
q2 = "(moth)"
q3 = ".*</td>"

s = "Organism: moth </td>"
test = re.search(q1 + q2 + q3, s).group(1)
于 2013-09-17T15:31:09.727 回答