The following is a summary of the definition of the SBML identifier type
UnitSId, which defines the permitted syntax of identifiers.
We express the syntax using an extended form of BNF notation:
letter ::= 'a'..'z','A'..'Z'
digit  ::= '0'..'9'
idChar ::= letter | digit | '_'
SId    ::= ( letter | '_' ) idChar*
The characters ( and ) are used for grouping, the
character * "zero or more times", and the character
| indicates logical "or".  The equality of SBML unit
identifiers is determined by an exact character sequence match; i.e.,
comparisons must be performed in a case-sensitive manner.  In addition,
there are a few conditions for the uniqueness of unit identifiers in an
SBML model.  Please consult the SBML specifications for the exact
formulations.