这是一个可重复的例子。可以说我们有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 库,但我试图在不使用库的情况下编写它。任何帮助将不胜感激。谢谢。
答案 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_)