首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式结果与测试人员不匹配

正则表达式结果与测试人员不匹配
EN

Stack Overflow用户
提问于 2019-02-17 21:21:13
回答 2查看 42关注 0票数 0

我是Python的新手..。

几天后,如果谷歌搜索,我仍然不能让它工作。

我的剧本:

代码语言:javascript
复制
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

测试文件内容:

代码语言:javascript
复制
### 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

脚本结果:

代码语言:javascript
复制
ubuntu-workstation:~$ python python_test.py
Hostname=bbg-zbx-proxy

但是,当我在测试器中测试regex时,结果是:https://regex101.com/r/wYUc4v/1

我需要一些建议,但我不能只得到bbg-zbx-proxy作为脚本输出。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-17 21:25:33

简单的解决办法是在等号上拆分。您知道它将始终包含这一项,并且您将能够忽略拆分中的第一项。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-02-17 21:28:04

您已经编写了一个捕获匹配的一部分的正则表达式,所以您可以使用它。另外,将您的字符类更改为包含-并去掉line.strip()调用,这在表达式中是不必要的。

总的来说,这可以归结为:

代码语言:javascript
复制
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))
        #       ^^^
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54737805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档