Module pyparsing :: Class OneOrMore |
[frames] | no frames]

# Class OneOrMore

source code

         object --+
                  |
      ParserElement --+
                      |
    ParseElementEnhance --+
                          |
             _MultipleMatch --+
                              |
                             OneOrMore

Repetition of one or more of the given expression.

Parameters:

- expr - expression that must match one or more times
- stopOn - (default=`None`) - expression for a terminating sentinel (only required if the sentinel would ordinarily match the repetition expression)

Example:

       data_word = Word(alphas)
       label = data_word + FollowedBy(':')
       attr_expr = Group(label + Suppress(':') + OneOrMore(data_word).setParseAction(' '.join))

       text = "shape: SQUARE posn: upper left color: BLACK"
       OneOrMore(attr_expr).parseString(text).pprint()  # Fail! read 'color' as data instead of next label -> [['shape', 'SQUARE color']]

       # use stopOn attribute for OneOrMore to avoid reading label string as part of the data
       attr_expr = Group(label + Suppress(':') + OneOrMore(data_word, stopOn=label).setParseAction(' '.join))
       OneOrMore(attr_expr).parseString(text).pprint() # Better -> [['shape', 'SQUARE'], ['posn', 'upper left'], ['color', 'BLACK']]

       # could also be written as
       (attr_expr * (1,)).parseString(text).pprint()

Instance Methods
__str__(self) str(x) | source code
setResultsName(self, name, listAllMatches=False) Define name for referencing matching tokens as a nested attribute of the returned parse results. | source code
Inherited from `_MultipleMatch`: `__init__`, `parseImpl` Inherited from `ParseElementEnhance`: `checkRecursion`, `ignore`, `leaveWhitespace`, `streamline`, `validate` Inherited from `ParserElement`: `__add__`, `__and__`, `__call__`, `__eq__`, `__hash__`, `__invert__`, `__mul__`, `__ne__`, `__or__`, `__radd__`, `__rand__`, `__repr__`, `__req__`, `__rmul__`, `__rne__`, `__ror__`, `__rsub__`, `__rxor__`, `__sub__`, `__xor__`, `addCondition`, `addParseAction`, `canParseNext`, `copy`, `matches`, `parseFile`, `parseString`, `parseWithTabs`, `postParse`, `preParse`, `runTests`, `scanString`, `searchString`, `setBreak`, `setDebug`, `setDebugActions`, `setFailAction`, `setName`, `setParseAction`, `setWhitespaceChars`, `split`, `suppress`, `transformString`, `tryParse` Inherited from `object`: `__delattr__`, `__format__`, `__getattribute__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__setattr__`, `__sizeof__`, `__subclasshook__`

Static Methods
Inherited from `ParserElement`: `enablePackrat`, `inlineLiteralsUsing`, `resetCache`, `setDefaultWhitespaceChars`

Class Variables
| __slotnames__ = ``[``]``
Inherited from `ParserElement`: `DEFAULT_WHITE_CHARS`, `packrat_cache`, `packrat_cache_lock`, `packrat_cache_stats`, `verbose_stacktrace`

Properties
Inherited from `object`: `__class__`

Method Details

### __str__(self) (Informal representation operator) | source code
str(x) Overrides: object.__str__ (inherited documentation)

### setResultsName(self, name, listAllMatches=False) | source code
Define name for referencing matching tokens as a nested attribute of the returned parse results. NOTE: this returns a *copy* of the original `ParserElement` object; this is so that the client can define a basic element, such as an integer, and reference it in multiple places with different names. You can also set results names using the abbreviated syntax, `expr("name")` in place of `expr.setResultsName("name")` - see __call__. Example:
       date_str = (integer.setResultsName("year") + '/'
                   + integer.setResultsName("month") + '/'
                   + integer.setResultsName("day"))

       # equivalent form:
       date_str = integer("year") + '/' + integer("month") + '/' + integer("day")
Overrides: ParserElement.setResultsName (inherited documentation)