正则表达式机器人框架

时间:2017-01-21 18:56:03

标签: python regex automation automated-tests robotframework

我在Robot Framework中使用替换字符串使用Regexp函数来替换“\ |”到“### PIPE ###”但它没有用。

*** Test Cases ***
TestCast1
${result}   Replace String Using Regexp   Bell|fieldName|11|LastName\|dd    \\\|    \#\#\#PIPE\#\#\#

结果

Bell###PIPIE###fieldName###PIPIE###11###PIPIE###LastName###PIPE###dd

我的预期结果

Bell|fieldName|11|LastName###PIPE###dd

你能帮我吗?

3 个答案:

答案 0 :(得分:0)

使用re.sub()函数的解决方案(如果输入字符串的最后一个" 管道"部分可能是动态的):

input_str = 'Bell|fieldName|11|LastName\|dd'
result = re.sub(r'\\\|(\w+)$', r'###PIPE###\1', input_str)

print(result)

输出:

Bell|fieldName|11|LastName###PIPE###dd

答案 1 :(得分:0)

让我们尝试一个粗略的想法,这很难看,但它有效.. :)

@toOuter

答案 2 :(得分:0)

我在使用可嵌套的For Loop for Robot Framework时遇到了类似的问题。这是我对正在发生的事情的理论,实际上没有关键字的代码:

事件1:您将输入Bell|fieldName|11|LastName\|dd\\\|\#\#\#PIPE\#\#\#发送至Replace String Using Regexp。这就是你输入的内容。

活动2:Replace String Using Regexp收到Bell|fieldName|11|LastName|dd\|###PIPE###。这会自动发生。

事件3:我假设您的关键字中的某些代码将\|放入另一个执行实际替换的关键字中。发生这种情况时,\|会变为|。然后,当该关键字替换文本时,它会找到|的四个实例,并用###PIPE###替换它们。

FIX

事件1:将输入Bell|fieldName|11|LastName\\|dd\\\\|\#\#\#PIPE\#\#\#发送至Replace String Using Regexp

活动2:Replace String Using Regexp收到Bell|fieldName|11|LastName\|dd\\|###PIPE###

活动3:\\|变为\|。然后,当另一个关键字替换文本时,它会找到\|的一个实例,并将其替换为###PIPE###

根据我在代码中看到的内容,|不需要文字,因此唯一可以做的就是\#。因此,您发送的内容与Bell|fieldName|11|LastName|dd|\#\#\#PIPE\#\#\#

基本相同