की तुलना में अलग-अलग समूह हैं, मैं प्ली का उपयोग कर रहा हूं और t.lex.lexmatch में संग्रहीत टोकन री मैच के बीच एक अजीब विसंगति देखी है, जैसा कि सामान्य रूप से परिभाषित एक sre_pattern की तुलना में मॉड्यूल। समूह (एक्स) के द्वारा बंद होने लगते हैं 1.प्लाई लेक्समैच नियमित अभिव्यक्ति में सामान्य समूह
मैं व्यवहार वर्णन करने के लिए मैं देख रहा हूँ एक सरल lexer परिभाषित किया है:
import ply.lex as lex
tokens = ('CHAR',)
def t_CHAR(t):
r'.'
t.value = t.lexer.lexmatch
return t
l = lex.lex()
(मैं t_error बारे में एक चेतावनी मिल लेकिन के लिए इसे अनदेखा । अब) अब मैं कुछ इनपुट lexer में फ़ीड और एक टोकन प्राप्त:
l.input('hello')
l.token()
मैं एक LexToken(CHAR,<_sre.SRE_Match object at 0x100fb1eb8>,1,0)
मिलता है।
m = _.value
तो अब मैं समूहों को देखो:
m.group()
=>'h'
मैं उम्मीद के रूप में मैं एक मैच वस्तु देखने के लिए चाहते हैं।
m.group(0)
=>'h'
जैसा कि मैं उम्मीद करता हूं।
m.group(1)
=>'h'
, फिर भी मुझे उम्मीद है कि ऐसा कोई समूह न हो।
मैन्युअल इस तरह के एक नियमित अभिव्यक्ति बनाने के लिए इस की तुलना करें:
import re
p = re.compile(r'.')
m2 = p.match('hello')
इससे अलग-अलग समूहों:
m2.group()
= 'h'
के रूप में मैं उम्मीद करते हैं।
m2.group(0)
= 'h'
जैसा कि मैं उम्मीद करता हूं।
m2.group(1)
मुझे उम्मीद है कि IndexError: no such group
देता है।
क्या कोई जानता है कि यह विसंगति क्यों मौजूद है?