我是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
但是当我在测试仪中测试了正则表达式时,结果是:https://regex101.com/r/wYUc4v/1
我需要一些建议,但我不能只获得bbg-zbx-proxy
作为脚本输出。
答案 0 :(得分:4)
您已经写了一个正则表达式来捕获比赛的一部分,因此您也可以使用它。另外,将您的角色类更改为包括-
并摆脱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))
# ^^^
答案 1 :(得分:1)
简单的解决方案是在等号上进行拆分。您知道它将始终包含该内容,并且您将能够忽略拆分中的第一项。
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