У меня есть регулярность для сопоставления сценария TCL в качестве ввода. Он работает на 99%, но не совпадает с «», «правильно, все остальные строки и сопоставление в порядке, и все другие синтаксисы сочетаются, как и ожидалось, и возвращает поток токенов для анализа. < /P>
{ C#
//for example
string line1= [return [file attributes $var -readonly]
string line2 = set x [string map {"\"" ""} $var]
//The original regex is
//string in ""| certain chars| whitespace | all the operators
string pattern = @"(\""[^\""]*\"")|([\[\]{}();,])|\s+|(\+|-|\*|/|%)|()|(==|!=|=|)|(!|&&|\|\|)|(\^|&|\|)|(\?|:)";
//does the tokenizing
string[] regexResult = Regex.Split(line2, pattern, RegexOptions.None);
// Filter out all empty tokens
string[] tokens = regexResult
.Where(s => !string.IsNullOrWhiteSpace(s))
.ToArray();
// Split the string using the defined separators
return tokens;
}
< /code>
line1 tokenices fine, как и большинство синтаксиса
line2 не может сопоставить "" "" " - я пробовал многочисленные шаблоны, но побег", кажется, прекращает строку, и это оставляет висящим »после этого. Таким образом, результат - список такенсов, как этот < /p>
'set' 'x' '[' 'string' 'map' '{"\"' " "' '"} $var]'
- wrong should be '"\""'
The problem is in the first regex group (\""[^\""]*\"")
I also tried (?:"([^"\\]*(?:\\.[^"\\]*)*)") which is closer as it matches but matches on multiple strings
example f [string map {"\"" ""} $var]
This yielded the strings as tokens "\"\\\"\"" "\\\"" "\"\""
The first - not sure where this came from but it looks like C# escaped version of the next
The second seems correct
The third seems correct
The question is what is wrong with the regex to not properly id only 2 strings in the the line2 string?
Thanks
Подробнее здесь: https://stackoverflow.com/questions/797 ... tiple-stri
Определите выражение regex в C#, чтобы проанализировать синтаксис TCL, позволяя несколько строк в потоке токена, включая ⇐ C#
Место общения программистов C#
1753741564
Anonymous
У меня есть регулярность для сопоставления сценария TCL в качестве ввода. Он работает на 99%, но не совпадает с «», «правильно, все остальные строки и сопоставление в порядке, и все другие синтаксисы сочетаются, как и ожидалось, и возвращает поток токенов для анализа. < /P>
{ C#
//for example
string line1= [return [file attributes $var -readonly]
string line2 = set x [string map {"\"" ""} $var]
//The original regex is
//string in ""| certain chars| whitespace | all the operators
string pattern = @"(\""[^\""]*\"")|([\[\]{}();,])|\s+|(\+|-|\*|/|%)|()|(==|!=|=|)|(!|&&|\|\|)|(\^|&|\|)|(\?|:)";
//does the tokenizing
string[] regexResult = Regex.Split(line2, pattern, RegexOptions.None);
// Filter out all empty tokens
string[] tokens = regexResult
.Where(s => !string.IsNullOrWhiteSpace(s))
.ToArray();
// Split the string using the defined separators
return tokens;
}
< /code>
line1 tokenices fine, как и большинство синтаксиса
line2 не может сопоставить "" "" " - я пробовал многочисленные шаблоны, но побег", кажется, прекращает строку, и это оставляет висящим »после этого. Таким образом, результат - список такенсов, как этот < /p>
'set' 'x' '[' 'string' 'map' '{"\"' " "' '"} $var]'
- wrong should be '"\""'
The problem is in the first regex group (\""[^\""]*\"")
I also tried (?:"([^"\\]*(?:\\.[^"\\]*)*)") which is closer as it matches but matches on multiple strings
example f [string map {"\"" ""} $var]
This yielded the strings as tokens "\"\\\"\"" "\\\"" "\"\""
The first - not sure where this came from but it looks like C# escaped version of the next
The second seems correct
The third seems correct
The question is what is wrong with the regex to not properly id only 2 strings in the the line2 string?
Thanks
Подробнее здесь: [url]https://stackoverflow.com/questions/79717775/define-a-regex-expression-in-c-sharp-to-parse-tcl-syntax-allowing-multiple-stri[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия