2016-11-07 12 views
1

Legal строки, определенной начиная с " и заканчивая " и не должен содержать " в середине, например:. * "please help me" - это правовая строка * "please"help me" - является незаконной строкой, потому что help me" не начинается с ".Как определить строку, которая не включает в себя "с помощью гибкого

Я хочу определить правило в flex, чтобы поймать юридические строки. Я попытался использовать это правило, но оно не работает. \"^[\"].*\"

+0

Возможно, '' [^ "] +" '- но что именно? – Jan

ответ

1

Один из способов написания правила является

["][^"]*["] 

Обратите внимание, что это не обязательно обратный слэш-побег кавычки (или большинство других регулярных выражений символов), если они находятся внутри класса символов, так ["] является точно так же, как \". Но я предпочитаю, как это выглядит :).

Что вы написали - эффективно ["][^"].*["] - означает «цитата, ничего, кроме цитаты, любая строка символов, цитата». То, что вы хотели, было «цитата, строка любого символа, кроме цитаты, цитата», которая выражается регулярным выражением выше.

Если вы хотите настаивать на том, чтобы строка содержала хотя бы один символ, замените * на +.

+0

Прежде всего, спасибо, я думаю, что ваша идея хорошая, но в некоторых случаях она разрешает \ n внутри строки, и это незаконно. знаете, как это исправить? например «help» »(и затем введите), чтобы строка подождала другого ввода, и это неправильно. –

+0

Спасибо, rici, мне удалось достичь решения. для любого, кто это волнует, это решение ["] [^" \ n] * ["] –

+1

Fwiw, вы никогда не упоминали, что строка не может содержать символы новой строки. Точные описания проблем всегда лучше. – rici