繁体   English   中英

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

[英]Regex match special character + in python

这是我的弦

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)

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 +。

您的正则表达式将无法找到+ 我已经在这里用测试数据重写了它。 请让我知道您不想要的输出中有什么。

classe ([\w+-]*)

这意味着您将在编译时替换它。 所以

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

这意味着您必须将其返回给var,例如

results = circa_match(w)

results将有您不同的匹配。

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM