如何在正则表达式中排除相等的符号?

时间:2014-02-05 10:12:29

标签: python regex

我用Python编写解析器。为此,我使用正则表达式。但在这里有必要消除一个等号。

_PIN_PATTERN = '(^[a-zA-Z]+[0-9]*[:]?[a-zA-Z0-9]*)'
_ATTRIBUTE_PATTERN = '(^[a-zA-Z0-9_]+[0-9]*(\s)*[=](\s)*[a-z0-9.-]+)'

在这种情况下,_PIN_PATTERN_ATTRIBUTE_PATTERN会返回相同的值,例如('ATTRIBUTE', 'ad = 0.013p') ('PIN', 'ad = 0.013p')。但是_PIN_PATTERN不应该返回('PIN', 'ad = 0.013p'),它应该返回类似('PIN', 'VSS:F85')的内容,即没有等号。

我的代码的一部分

def _is_pin(self, s):
        a = re.match(self._PIN_PATTERN, s)
        e = re.match(r'=', s)
        if a and not e:
            return True
        else:
            return False

1 个答案:

答案 0 :(得分:0)

你在寻找这样的东西:

_ATTRIBUTE_PATTERN = r'[\w_]+\s*=\s*[\w\.\-]+' # matches ad = 0.013p
# _ATTRIBUTE_PATTERN = r'[^=]+=[^=]+' # matches string containing '='
_PIN_PATTERN = r'\w+\s*:\s*\w+'  # matches VSS:F85
# _PIN_PATTERN = r'[^=]+' # if you want to match any string which does not contain '=' char