私は次の正規表現を持っています
^(.+?)(\s+engine$|\s+ROW_FORMAT)
大文字と小文字を区別しないようにします。
これに伴う問題は、「engine」または「row_format」のいずれかに一致し、両方に一致しないことです(最後の例に示されているように)。ここで何が欠けていますか?
In [17]: st = 'this is my engine and row_format'
In [18]: match = re.match('^(.+?)(\s+engine$|\s+ROW_FORMAT)', st, re.I)
In [19]: match
Out[19]: <_sre.SRE_Match at 0x26c5030>
In [20]: match.group(1)
Out[20]: 'this is my'
In [21]: st = 'this is my row_format and engine'
In [22]: match = re.match('^(.+?)(\s+engine$|\s+ROW_FORMAT)', st, re.I)
In [23]: match.group(1)
Out[23]: 'this is my'
In [24]: match.group(2)
Out[24]: ' row_format'
In [25]: match.group(3)
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-25-da7df187e689> in <module>()
----> 1 match.group(3)
IndexError: no such group
特殊文字を追加し+
ます; これにより、結果のREが前のREの1回以上の繰り返しと一致します。
^(.+?)(\s+engine$|\s+ROW_FORMAT)+
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加