我在使用以下正则表达式匹配字符串中的整个模式时遇到了一些麻烦,我不确定原因:
pattern = "^.*\\b"+variable+"\\b.*$"
found = re.search(pattern, word)
我想匹配确切的模式(例如,变量可以是C / S或C / Strip,所以它需要匹配完整的单词C / Strip,如果它在那里)。
例如,单词可以是:
1.00C/S
100C/S
100C/Strip23
单词也可以是C / Strip或C / S。
关于我可能出错的地方的任何指示?
EDITED:例如,我想匹配单词100C / S
中的变量C / S.答案 0 :(得分:0)
使用模式"^.*\\b"+variable+"\\b.*$"
,你是
.*
)和从您提出问题的方式来看,我假设您只想匹配variable
中的特定文字。要实现这一目标,你必须改变你的模式。
尝试这样的事情:
re.search(re.escape(variable), word)
对于变量C/S
,这只会匹配C/S
等字符串中的1.00C/S
。如果你想在之前/之后匹配任何字符(没有空格,没有数字),它可能看起来像这样:
pattern = r"[a-zA-Z]*" + re.escape(variable) + r"[a-zA-Z]*"
re.search(pattern, word)
查看行动here中的正则表达式。
通过明确禁止特定字符(例如允许任何但空格或数字),您也可以减少限制:
pattern = r"[^\d\s]*" + re.escape(variable) + r"[^\d\s]*"
re.search(pattern, word)
(见行动here。)