我是Python的新手..。
几天后,如果谷歌搜索,我仍然不能让它工作。
我的剧本:
import re
pattern = '^Hostname=([a-zA-Z0-9.]+)'
hand = open('python_test_data.conf')
for line in hand:
line = line.rstrip()
if re.search(pattern, line) :
print line测试文件内容:
### Option: Hostname
# Unique, case sensitive Proxy name. Make sure the Proxy name is known to the server!
# Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=
Hostname=bbg-zbx-proxy脚本结果:
ubuntu-workstation:~$ python python_test.py
Hostname=bbg-zbx-proxy但是,当我在测试器中测试regex时,结果是:https://regex101.com/r/wYUc4v/1
我需要一些建议,但我不能只得到bbg-zbx-proxy作为脚本输出。
发布于 2019-02-17 21:25:33
简单的解决办法是在等号上拆分。您知道它将始终包含这一项,并且您将能够忽略拆分中的第一项。
import re
pattern = '^Hostname=([a-zA-Z0-9.]+)'
hand = open('testdata.txt')
for line in hand:
line = line.rstrip()
if re.search(pattern, line) :
print(line.split("=")[1]) # UPDATED HERE发布于 2019-02-17 21:28:04
您已经编写了一个捕获匹配的一部分的正则表达式,所以您可以使用它。另外,将您的字符类更改为包含-并去掉line.strip()调用,这在表达式中是不必要的。
总的来说,这可以归结为:
import re
pattern = '^Hostname=([-a-zA-Z0-9.]+)'
hand = open('python_test_data.conf')
for line in hand:
m = re.search(pattern, line)
if m:
print(m.group(1))
# ^^^https://stackoverflow.com/questions/54737805
复制相似问题