[英]Write a python regular expression for matching dot and array indices
我需要匹配適當的變量訪問字符串ex。
employeeobj.empid
employeeobj.grades[0].grade
employee[0]
employee.dept.location.room[0]
幾個例子-
employeeobj.[] Invalid
.employeeobj Invalid
[]employeeobj Invalid
employeeobj.dept. Invalid
employeeobj.dept valid
employeeobj.dept[9] valid
employeeobj[1].dept valid
我需要正則表達式在python中
更具體地說,我需要匹配所有字符串
謝謝
這就是使用pyparsing
可以做到的
from pyparsing import *
#see https://stackoverflow.com/questions/36428652/pyparsing-is-it-possible-to-globally-suppress-all-literals
ParserElement.inlineLiteralsUsing(Suppress)
#the grammar
ident = Word(alphas, alphanums)
elem = Group(ident + Optional('[' + Regex('\d+') + ']'))
expr = elem + ZeroOrMore('.' + elem)
tests = ['employeeobj.[]',
'.employeeobj',
'[]employeeobj',
'employeeobj.dept.',
'employeeobj.dept',
'employeeobj.dept[9]',
'employeeobj[1].dept[2].head']
for s in tests:
print s
try:
print expr.parseString(s, True).asList()
except ParseException:
print 'no match'
print
產出
employeeobj.[]
no match
.employeeobj
no match
[]employeeobj
no match
employeeobj.dept.
no match
employeeobj.dept
[['employeeobj'], ['dept']]
employeeobj.dept[9]
[['employeeobj'], ['dept', '9']]
employeeobj[1].dept
[['employeeobj', '1'], ['dept', '2'], ['head']]
但是,與re
相比,Pyparsing非常慢,可能無法很好地完成您的任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.