【问题标题】:String Regular Expression字符串正则表达式
【发布时间】:2016-12-03 22:43:14
【问题描述】:

我有与此类似但更长的字符串:a:'first'[as34ttatgv34tgw34t$'b':'man',a:'second'[sdfg53t3srthhghrs$'b':'woman'

我想找到类似a:'first'[SOMETHING1$'b':'SOMETHING2' 的模式并将 SOMETHING2 替换为 caR 但 SOMETHING1 保持不变

结果我得到了字符串:

a:'first'[as34ttatgv34tgw34t$'b':'caR',a:'second'[sdfg53t3srthhghrs$'b':'woman'

【问题讨论】:

  • 您能更好地描述您想要识别的模式吗?我们可以对您想要匹配的模式做出哪些类型的假设?
  • 我想在字符串 a:'first' 中找到它,接下来我想替换这个 a:'first' 的值 'b'。 'b' 总是落后于模式 [SOMETHING$
  • 我不明白你到底想要做什么。
  • 我想将所有 'b':'' 替换为其他值,但我不知道 'b' 中的值是什么。但我知道 a 的价值:它的“第一”,我知道“b”将永远落后于模式 [SOMETHING$

标签: python regex python-2.7 python-3.x


【解决方案1】:

您可以匹配所有b 值并使用Python 支持的Positive Lookbehind (?<=TEXT) 替换它们。如果b 值仅包含字母数字字符,则可以使用此正则表达式:

(?<=b\'\:\')[\w\s]*

查看demo

如果b value很复杂并且有特殊字符,你可以使用这个正则表达式来匹配它:

(?<=b\'\:\')[\s\S]*?(?=\')

这是使用第二个正则表达式进行此替换的工作 Python:

import re
text = '''a:'first'[as34ttatgv34tgw34t$'b':'man',a:'second'[sdfg53t3srthhghrs$'b':'woman'
'''
find = r"(?<=b\'\:\')[\s\S]*?(?=\')"
Bvalue = re.findall(find, text)
text = text.replace(Bvalue[0], 'car', 1)  #first b value
text = text.replace(Bvalue[1], 'chair', 1)  #second b value
print text

输出:

a:'first'[as34ttatgv34tgw34t$'b':'car',a:'second'[sdfg53t3srthhghrs$'b':'chair'

Pythondemo

正如你在上面的Python中看到的,你所要做的就是使用text.replace函数来替换BvalueBvalue[0]指的是b value的数字1,Bvalue[1]指的是@987654336 @ 数字 2,依此类推。

【讨论】:

  • 我想用 'a' 值替换 'b',我需要输入的函数,例如: ('second', 'new_value') 我得到了 a:'first'[as34ttatgv34tgw34t$'b':'man',a:'second'[sdfg53t3srthhghrs$'b':'new_value' ,如何使用这个正则表达式
  • @ŁukaszMleczko 我更新了我的代码。你现在要做的就是使用这个函数:text.replace(Bvalue[0], 'car', 1)替换第一个b valueBvalue[1]替换第二个b valueBvalue[2]替换第三个b value等等。跨度>
  • 可以使用文本进行搜索,例如我想找到冰箱并将他的“b”更改为扬声器。 a:'fridge'[as34ttatgv34tgw34t$'b':'man',a:'apple'[sdfg53t3srthhghrs$'b':'woman' 到:a:'fridge'[as34ttatgv34tgw34t$'b':'speaker',a:'apple'[sdfg53t3srthhghrs$'b':'woman' 正如我所说,我想要类似函数的东西,我有两个参数首先是 'a' 的内容,然后是替换这个 'a' 的 'b' 的文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 2013-12-15
  • 2016-01-24
  • 2016-02-29
  • 1970-01-01
  • 2016-02-09
相关资源
最近更新 更多