Search code examples
regexxmlxsdxmllint

XML Schema regex empty string


I have a XML Schema with a regex restriction that matches three different options and looks similar to this:

somestring|someotherstring|
  1. Some string, or
  2. Some other string, or
  3. Empty string

My problem is that xmllint does not like this regex. It gives the following error:

regexp error : failed to compile: expecting a branch after |

I am forced to comply with xmllint because of the environment.

My question is, what are other options to match empty string using regex in a XSD?

As I understand, negative look ahead is not available in a XSD regex, and I am at a loss for other options.


Solution

  • You may use an optional group:

    (somestring|someotherstring)?
    ^                          ^^ 
    

    It will match these 2 words or an empty string. In XSD, all patterns are anchored automatically, so, no additional operators are necessary.

    See what the regex matches.