問題:有沒有辦法讓searchString返回嵌套字符。
考慮以下示例:
data = 'apple(4), banana(13), juice(1)'
from pyparsing import Word, nums, alphas
nested = Word(alphas) + '(' + Word(nums) + ')'
for item in data.split((',')):
print(item, "->", nested.searchString(item))
輸出:
apple(4), ->[['apple', '(', '4', ')']]
banana(13), ->[['banana', '(', '13', ')']]
juice(1), ->[['juice', '(', '1', ')']]
import re
nObj = re.compile('(\w+?)(\(\d+\))')
findall = nObj.findall(data)
print('findall:{}'.format(findall))
輸出:
findall:[('apple', '(4)'), ('banana', '(13)'), ('juice', '(1)')]
測試使用Python 3.4.2
你能具體談談正是這些括號表達式可能看起來像,你需要支持嵌套? 'nestedExpr'是一個快速又髒兮兮的幫手,可以快速跳過嵌套的parens,大括號,括號等,從嵌套中保留結構。如果你只是想要原始子字符串,將'nestedExpr'包裝在'originalTextFor'中,它應該包含括號'()'。但是如果你真的想弄懂內容,那麼我建議你爲它們定義實際的遞歸表達式。 – PaulMcG