匹配字符串中模式的出现

时间:2014-12-11 10:55:10

标签: python regex

我在使用以下正则表达式匹配字符串中的整个模式时遇到了一些麻烦,我不确定原因:

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.

1 个答案:

答案 0 :(得分:0)

使用模式"^.*\\b"+variable+"\\b.*$",你是

  1. 匹配整个字符串(.*)和
  2. 您必须转义变量中的特殊字符
  3. 从您提出问题的方式来看,我假设您只想匹配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。)