正则表达式匹配python中的特殊字符+

时间:2015-10-04 22:48:55

标签: python regex

这是我的字符串

relation="da incasso monoporta classe A+ "

我需要提取 A + (效率等级)

我必须尝试列出(A,A+,A++,A+++,B,C...etc)

等已知值

所以我做了一个循环

for token in dictionary:

令牌的一个例子是A +

但是我无法在我的字符串中找到A +标记(在问题开头就称为关系)。

我使用此函数来捕获字符串中的内容

res=cerca_match(token)(relation)

con cerca_match定义如下:

def cerca_match(w):
    return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).findall

我得到的是res =“A”但预期的输出是res =“A +”

出了什么问题?

*更新*

我需要修改此

def cerca_match(w):
    return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).findall

我需要传递必须匹配的令牌(在这种情况下为“A +”)

****更新****

def cerca_match(w):
    return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).findall

我需要将值传递给此函数...我使用此函数来捕获一些简单的字符串

\b(classe)\b
\b(monoporta)\b

但是如果我传递像“A +”

这样的标记,那么该函数也必须有效

所以正则表达式将是

\b(A+)\b

但是正则表达式无法捕获关系字符串中的A +。

2 个答案:

答案 0 :(得分:0)

你的正则表达式不会找到+。我用测试数据here重写了它。请让我知道您不想要的输出内容。

classe ([\w+-]*)

这意味着你将在编译中替换它。所以

def cerca_match(w):
    return re.findall(r'classe ([\w+]*)'.format(w), flags=re.IGNORECASE)

表示您必须将其返回到var,例如

results = circa_match(w)

results将有不同的匹配。

答案 1 :(得分:0)

import re

relation="da incasso monoporta classe A+"

print(re.findall("[A-Z]\++|[A-Z]",relation))

>>> ['A+']

这个匹配(A,A+,A++,A+++,B,C...etc)

import re

relation="da incasso monoporta classe A+"

def cerca_match(w):
    return re.findall("[A-Z]\++|[A-Z]",w)