如何编写正则表达式来搜索和替换使用python的字符串?

时间:2017-02-24 11:15:17

标签: regex python-3.x

这是一个可重复的例子。可以说我们有HIV/AIDS字。我的问题是如何编写正则表达式来搜索这样的字符串并用字符串HIV_AIDS替换它。

这是我能够写的搜索模式。这在实践中是好事吗?

txt='DDD/VCD'  #python 3.x

re1='((?:[a-z][a-z0-9_]*))' # Variable Name 1
re2='(\\/)' # Any Single Character 1
re3='((?:[a-z][a-z0-9_]*))' # Variable Name 2

rg = re.compile(re1+re2+re3,re.IGNORECASE|re.DOTALL)
m = rg.search(txt)

if m:
var1=m.group(1)
c1=m.group(2)
var2=m.group(3)
print ("("+var1+")"+"("+c1+")"+"("+var2+")"+"\n")

如果我上面的代码足够好,请帮我写更多代码来替换字符串(我上面已经提到的样本)。

我仍然是正则表达式的初学者,并希望使用python-3.5x及更高版本为此编写一个简单的正则表达式。我在python中找到了 re 库,但我试图在不使用库的情况下编写它。任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用select tb_roll, max(tb_date_return) as max_return from trn_books group by tb_roll 功能。只有在编译器找到匹配项时才会发生替换,否则它将返回输入字符串而不进行任何修改。

re.sub

必要时编译正则表达式。

>>> re.sub(r'(?i)\b([a-z][a-z0-9_]*)/([a-z][a-z0-9_]*)\b', r'\1_\2', 'DDD/VCD')
'DDD_VCD'
>>> 

reg = re.compile(r'(?i)\b([a-z][a-z0-9_]*)/([a-z][a-z0-9_]*)\b') reg.sub(r'\1_\2', 'DDD/VCD') 字边界有助于将单词字符与非单词字符分隔或(_vice_versa_)