我有一个看起来像这样的Yaml
..!用户可以定义的N个xyz_flovor_id
,其中_flovor_id
关键将是常见的。目的是获取*_flavor_id
密钥并从中提取价值。
server:
tenant: "admin"
availability_zone: "nova"
cpu_overcommit_ratio: 1:1
memory_overcommit_ratio: 1:1
xyz_flovor_id: 1
abc_flavor_id: 2
我能够找到正则表达式来匹配_flovor_id
。但是,在尝试在代码中使用它时会引发错误。这是我的代码。
def get_flavor_keys(params):
pattern = re.compile(r'[^*]flavor_id')
for key, value in params.iteritems():
print value
if key == 'server':
if pattern.match(value):
print 'test'
print value
正在转储整个YAML文件(预期)。之后立即回溯。
Traceback (most recent call last):
File "resource_meter.py", line 150, in <module>
get_flavor_keys(items)
File "resource_meter.py", line 15, in get_flavor_keys
if pattern.match(value):
TypeError: expected string or buffer
您需要此正则表达式。我将其分组为键值对:
^\s*(?P<key>\w+_flavor_id):\s*(?P<value>\d+)
Python演示:https://repl.it/Lk5W/0
import re
regex = r"^\s*(?P<key>\w+_flavor_id):\s*(?P<value>\d+)"
test_str = (" server:\n"
" tenant: \"admin\"\n"
" availability_zone: \"nova\"\n"
" cpu_overcommit_ratio: 1:1\n"
" memory_overcommit_ratio: 1:1\n"
" xyz_flavor_id: 1\n"
" abc_flavor_id: 2\n")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches):
print ("{key}:{value}".format(key = match.group('key'), value=match.group('value')))
有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。
我们得到了一些这样的内容:
问题内容: 我实现了如下所示的Pattern类:http : //www.java2s.com/Code/Java/GWT/ImplementjavautilregexPatternwithJavascriptRegExpobject.htm 我想使用以下正则表达式来匹配我的String中的网址: 不幸的是,Java编译器当然无法解析该字符串,因为它不使用有效的转义序列(因为从技术上讲,以上是Ja
问题内容: 在使用正则表达式时,我使用RegexBuddy。我从其库中复制了正则表达式以匹配URL。我在RegexBuddy中成功测试。但是,当我将其复制为Java 样式并将其粘贴到Java代码中时,它将无法正常工作。以下类打印: 有人知道我在做什么错吗? 问题答案: 请尝试以下正则表达式字符串。你的测试可能以区分大小写的方式进行。我添加了小写字母Alpha以及正确的字符串开头占位符。 这也适用:
寻找以下规则验证密码的帮助: 8个字符 包含至少1个大写字母 包含至少1个小写字母 包含至少一个数字 不能以数字开头 不包含特殊字符 我已经做到了:
主要内容:基本模式匹配,字符簇,确定重复出现基本模式匹配 一切从最基本的开始。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如: 这个模式包含一个特殊的字符 ^,表示该模式只匹配那些以 once 开头的字符串。例如该模式与字符串 "once upon a time" 匹配,与 "There once was