在Python中,我想在以下字符串中将“be”替换为“nl”:
http://test.nl/be/nl/product/abc-dadf-adsfsw-12234/
BUT !!我希望它检查BEFORE / product /部分,因为如果/ product /后面的字符串包含“be”,它必须保持不变。
示例:
http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/(部分BEFORE / product /包含no,所以必须保持不变)
http://test.nl/be/nl/product/abc-dadf-be-adsfsw-12234/(部分BEFORE / product /包含,因此必须用nl替换,因此它变为http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/)
http://test.be/nl/nl/product/abc-dadf-be-adsfsw-12234/(部分BEFORE / product /包含,因此必须用nl替换,因此它变为http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/)
答案 0 :(得分:1)
为此使用正向前瞻。
url = '''http://test.nl/be/nl/product/abc-dadf-adsfsw-12234/'''
url = re.sub("/be/(?=.*/product/)", "/nl/", url)
# or using word boundary around `be` to handle .be/ .be. etc
# url = re.sub("\bbe\b(?=.*/product/)", "nl", url)
print url
这个积极的预测(?=.*/product/)
正在检查前面/product/
后是否存在/be/
。
但请记住,这个正则表达式适用于/be/
之前的任何/product/
。总的来说,我说的是多次出现。
答案 1 :(得分:0)
我能想到的最简单的方法就是用正则表达式拆分字符串。这里有一些代码可以为您提供所需的输出。
import re #python's regular expression module
string = 'http://test.nl/be/nl/product/abc-dadf-adsfsw-12234/'
search = re.match('(.*)(product.*)', string)
first_part = search.group(1)
next_part = search.group(2)
first_part = first_part.replace('be', 'nl')
new_string = first_part + next_part
print(new_string)
答案 2 :(得分:0)
没有正则表达式(没有导入)的选项:
elements = raw_input('URL?\n').split('/')
for i in range(0, elements.index('product')):
elements[i] = elements[i].replace('be', 'nl')
print '/'.join(elements)
试验:
http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/
-> http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/
http://test.nl/be/nl/product/abc-dadf-be-adsfsw-12234/
-> http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/
http://test.be/nl/nl/product/abc-dadf-be-adsfsw-12234/
-> http://test.nl/nl/nl/product/abc-dadf-be-adsfsw-12234/