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

2024-06-10 05:10:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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

Tags: selfre解析器returnmatchpinvssattribute
1条回答
网友
1楼 · 发布于 2024-06-10 05:10:34

你在找这样的东西吗:

_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

相关问题 更多 >