Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得这两个';111=';使用python正则表达式_Python_Regex - Fatal编程技术网

如何获得这两个';111=';使用python正则表达式

如何获得这两个';111=';使用python正则表达式,python,regex,Python,Regex,这是mu\y代码: a = '111 = dw11qdwq\n111 = aaaaa' print re.search(r'111 = (\S*)',a).group(1) 它显示:dw11qdwq 但是我想要得到dw11qdwq和aaaaaa 那我该怎么办 谢谢 已更新 a = '111 = dw11qdwq\n111 = aaaaa' b=re.findall(r'111 = (\S*)',a) d = ['qqqqqq','wwwwwww'] a= re.sub(r'111 = (

这是mu\y代码:

a = '111 = dw11qdwq\n111 = aaaaa'

print re.search(r'111 = (\S*)',a).group(1)
它显示:
dw11qdwq

但是我想要得到
dw11qdwq
aaaaaa

那我该怎么办

谢谢

已更新

a = '111 = dw11qdwq\n111 = aaaaa'

b=re.findall(r'111 = (\S*)',a)

d = ['qqqqqq','wwwwwww']
a= re.sub(r'111 = (\S*)',lambda x: d[],a)
以及如何将
dw11qdwq
替换为
qqqq
aaaaa
替换为
wwwww

我想得到
'111=qqqq\n111=wwwwwww'

更新:

现在没事了:

d = {'dw11qdwq':'qqqqqq' ,'aaaaa':'wwwwwww'}

a = '111 = dw11qdwq\n111 = aaaaa'

print repr(a)
a= re.sub('(111\s*=\s*)(\S*)',lambda mat: mat.group(1)+d[mat.group(2)],a)
print repr(a)
这将匹配具有1个或多个非空格字符的任何单词。(我相当确定您不希望匹配0个或更多字符(这是“*”提供的))

编辑:

更新的代码:

replacements = {"dw11qdwq":"qqqqqq" , "aaaaa" : "wwwwwww"}
a = '111 = dw11qdwq\n111 = aaaaa'


for key, value in replacements.iteritems():
  a = a.replace(key, value)
a现在是:

"111 = qqqqqq\n111 = wwwwwww"
这将匹配具有1个或多个非空格字符的任何单词。(我相当确定您不希望匹配0个或更多字符(这是“*”提供的))

编辑:

更新的代码:

replacements = {"dw11qdwq":"qqqqqq" , "aaaaa" : "wwwwwww"}
a = '111 = dw11qdwq\n111 = aaaaa'


for key, value in replacements.iteritems():
  a = a.replace(key, value)
a现在是:

"111 = qqqqqq\n111 = wwwwwww"

我认为这应该回答您的编辑:

a = '111 = dw11qdwq\nsome other line\n111 = aaaaa'
b = re.split(r'(111 = )\S*', a)
d = ['qqqqqq','wwwwwww']
a = "".join(x + d.pop(0) if x == '111 = ' else x for x in b)
print a

编辑:现在应该可以正确处理不匹配的文本。

我认为这应该回答您的编辑:

a = '111 = dw11qdwq\nsome other line\n111 = aaaaa'
b = re.split(r'(111 = )\S*', a)
d = ['qqqqqq','wwwwwww']
a = "".join(x + d.pop(0) if x == '111 = ' else x for x in b)
print a

编辑:现在应该可以正确处理不匹配的文本。

以下是修改后问题的解决方案:

reduce(lambda result, (original, replacement): result.replace('111 = ' + original, '111 = ' + replacement), d, a)
a = '111 = dw11qdwq\n111 = aaaaa'
d = ['qqqqqq','wwwwwww']
# i want to get '111 = qqqqqq\n111 = wwwwwww'

它以
a
开始,并贯穿
d
中的每个替换(由lambda语句中解包为
original
replacement
的键值元组表示),并将其应用于字符串。

以下是您修改后问题的解决方案:

reduce(lambda result, (original, replacement): result.replace('111 = ' + original, '111 = ' + replacement), d, a)
a = '111 = dw11qdwq\n111 = aaaaa'
d = ['qqqqqq','wwwwwww']
# i want to get '111 = qqqqqq\n111 = wwwwwww'
它以
a
开始,并贯穿
d
中的每个替换(由lambda语句中解包的键值元组表示为
original
replacement
),并将其应用于字符串。

您的问题:

reduce(lambda result, (original, replacement): result.replace('111 = ' + original, '111 = ' + replacement), d, a)
a = '111 = dw11qdwq\n111 = aaaaa'
d = ['qqqqqq','wwwwwww']
# i want to get '111 = qqqqqq\n111 = wwwwwww'
您不需要regexp

out = '\n'.join(a1.split(' = ')[0] + ' = ' + d1 for a1,d1 in zip(a.splitlines(), d))
返回:

'111 = qqqqqq\n111 = wwwwwww'
你的问题:

reduce(lambda result, (original, replacement): result.replace('111 = ' + original, '111 = ' + replacement), d, a)
a = '111 = dw11qdwq\n111 = aaaaa'
d = ['qqqqqq','wwwwwww']
# i want to get '111 = qqqqqq\n111 = wwwwwww'
您不需要regexp

out = '\n'.join(a1.split(' = ')[0] + ' = ' + d1 for a1,d1 in zip(a.splitlines(), d))
返回:

'111 = qqqqqq\n111 = wwwwwww'

编辑

对不起,我忘了将
111\s*=\s*
定义为一个组 你可以做任何一件事

import re

d = {'dw11qdwq':'qqqqqq' ,'aaaaa':'wwwwwww'}

a = '111 = dw11qdwq\n111 = aaaaa'

print repr(a)
a= re.sub('(111\s*=\s*)(\S*)',lambda mat: mat.group(1) + d[mat.group(2)],a)
print repr(a)

编辑

对不起,我忘了将
111\s*=\s*
定义为一个组 你可以做任何一件事

import re

d = {'dw11qdwq':'qqqqqq' ,'aaaaa':'wwwwwww'}

a = '111 = dw11qdwq\n111 = aaaaa'

print repr(a)
a= re.sub('(111\s*=\s*)(\S*)',lambda mat: mat.group(1) + d[mat.group(2)],a)
print repr(a)


但是sting非常大,可能有很多
dw11qdwq
和很多
aaaaa
,但是我只想更改
111=dw11qdwq
,所以..但是sting非常大,可能有很多
dw11qdwq
和很多
aaaaaaa
,但是我只想更改
111=dw11qdwq
,所以..哦,我没看到你找到了和我一样的更正,当我看到你对我的答案的评论时,我编辑得太快了。但是,您知道替换功能的用法吗?看我的编辑。哦,我没有看到你发现了和我一样的更正,当我看到你对我的答案的评论时,我编辑得太快了。但是,您知道替换功能的用法吗?请参阅我的编辑。