Robotframework正则在Python可运行但匹配失败问题求助
问题原因排查
1. 正则拼接引入多余空白
你使用SEPARATOR=拼接多行正则片段时,每个片段前后的空格(比如https?尾部的空格、://头部的空格)都会被直接拼入最终的正则表达式,导致正则里出现了原URL中不存在的空白字符,自然无法匹配。
2. 关键字使用错误
Get Lines Matching Regexp的作用是筛选输入内容中整行完全匹配正则的行,默认会按行拆分输入,且要求整行内容和正则匹配,你的需求是从单行URL中提取符合规则的子串,应该用Get Regexp Matches关键字。
修正后的脚本
*** Settings *** Library String *** Variables *** # 直接写单行正则避免拼接空白问题,Robot中反斜杠需要双写转义 ${pattern} https?://(www\\.|m\\.)facebook\\.com/story\\.php\\?story_fbid=[0-9]+&id=[0-9]+ *** Test Cases *** String should match pattern ${url}= Set Variable https://m.facebook.com/story.php?story_fbid=123345&id=12334&__xts__%5B0%5D=12.AboYsxZUMIF4f8fZJLZ0LVrJZJ1jxGxzsmM2lJZJ8JoGFxO1UgViHWKvUSGwxVjkzwOjfCxL-FxJY9pfgvYP6L8Kwdd4tHZl-V1OaVvl40agK3dimgois_14R0sr9rSelJ5rt0WTU5fRoHNeGv2TR3sxrewYBf2wzfMQwDKV4pV4WbLkbqFd0f1mbcpx7VjMduLhbj2MXRHO_ERg1ssEesWbCHAzvZNSmXP6LycMlYHhbaoi6m7gTpBswQR-VBkdfjk3289dfsfsdfoIgfSxaxr9oa6FATiaF2V54-QWQOKgYtuO87YzKFnNh-m_mGgVkCYIA7-YwEK10zZCmSxEtSrmWSl5ZzSXNRpMg&__tn__=%2As%2As # 提取所有匹配的子串,limit=1只取第一个匹配结果 ${matches}= Get Regexp Matches ${url} ${pattern} limit=1 Run Keyword If ${matches} Log To Console OK MATCHED! ${matches[0]}
内容的提问来源于stack exchange,提问作者user3925023
相关产品推荐
相关产品推荐

