Regex для исключения слова (разновидность XML-схемы) - PullRequest
5 голосов
/ 03 апреля 2012

В настоящее время я пытаюсь найти регулярное выражение со следующим условием:

Match:          FOO_.* (valid if the string contains FOO_ at the beginning)
Don't Match:    FOO_BAR (not valid if the string contains BAR)

Обычно я использовал бы следующее выражение:

FOO_(?!BAR)

Моя проблема с этим решением, что я хочу использовать его в XML-схеме.Использование его с анализаторами приводит к появлению следующего сообщения об ошибке:

schema.xsd:50: element pattern: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}pattern': The value 'FOO_(?!BAR)' of the facet 'pattern' is not a valid regular expression.
WXS schema schema.xsd failed to compile

Есть ли работоспособное решение для чтения ;-) или оно просто невозможно внутри схемы XML?

Ответы [ 2 ]

4 голосов
/ 03 апреля 2012

Lookaround часть (?!BAR) вашего выражения не поддерживается в XML-схеме.

Для вашего конкретного примера следующее выражение должно дать вам представление о том, как обойти это ограничение:

FOO_([^B].*|B([^A].*|A([^R].*)?)?)?
0 голосов
/ 03 апреля 2012

Не подойдет ли следующий метод для фразы, которую вы пытаетесь исключить?

Ограничить список слов в схеме XML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...