【发布时间】:2019-12-16 09:12:39
【问题描述】:
目标:
- 我有输入字符串,它由逗号和键值分隔
- 我想用名称组编写正则表达式,以便提取和替换每个属性的值
在字符串*keyword , property1 = ABC, property2 = 2 中,我想按名称查找和替换property1 和property2 的值
对于给定的字符串 *keyword , property1 = ABC, property2 = 2 ,结果字符串应该是 *keyword , property1 = DEF, property2 = 10
见下方代码
import re
# find property1 in given string and replace its new value
property1 = 'DEF'
# find property2 in given string and replace its new value
property2 = '10'
line1 = '*keyword , property1 = ABC, property2 = 2 '
line2 = '*keyword , property2 = 2, property1 = ABC ' #property2 comes before proeprty1
line3 = '*keyword,property1=ABC,property2= 2' #same as line 1 but without spaces
regex_with_named_group = r'=\s*(.*)\s*,\s*property1=\s*(.*)\s*,'
line1_found = re.search(regex_with_named_group, line1)
line2_found = re.search(regex_with_named_group, line2)
line3_found = re.search(regex_with_named_group, line3)
if line1_found:
print( line1_found.group('property1'), line1_found.group('property2') )
if line2_found:
print( line2_found.group('property1'), line2_found.group('property2') )
if line3_found:
print(line3_found.group('property1'), line3_found.group('property2'))
【问题讨论】:
-
你想要什么输出格式
-
我想将
property1的值替换为ABC,例如使用命名组获取它 -
除非我遗漏了什么,否则您的正则表达式似乎没有可以使用此构造创建的命名捕获组:
(?P<name>...) -
@SitiSchu 是的,我不熟悉命名组语法,需要在这里提出建议
标签: python regex regex-group