У меня есть шаблон регулярного выражения, хранящийся в базе данных SQLite, который я использую для поиска определенных строк (см. WhatItShouldLookLike ниже). Когда я извлекаю эту переменную из базы данных в свой код, она выглядит так (см. WhatRegExReads ниже). Раньше у меня была жестко закодирована строка с символом @, и все работало нормально, но, как правило, я не люблю жестко кодировать подобные вещи на случай, если они изменятся. Как мне это исправить? Есть ли способ буквально записать строку в том виде, в котором она поступает из базы данных?
Я думал о том, чтобы ввести ключевые слова для замены, когда она выходит из базы данных, но еще не пробовал. Как Char(34).
Код состоит из нескольких разных функций.
var whatItShouldLookLike = @"(?[0-9]{1,2}\"")";
var whatRegExReads = @"(?[0-9]{1,2}\\\"\")";
List lst = GetTblToDictionary("McRegEx");
Dictionary dict = lst.FirstOrDefault(d => d["PatternName"].Equals("LineNoCleanUp"));
//string regExPatt = @"(?[0-9]{1,2}\"")(?\-)(?\w{1,5})*(?\s{1})*(?\-)(?\w{1,3})(?\-[1-3])*(?\-)(?[A-Z]{0,4})(?[0-9]{1,4})(?\-)*(?[A-Z]{0,2})(?\-)*(?[A-Z]{0,3})(?\([W]\))*(?\-)*(?[0-9]{0,1})(?\-)*(? )*(?[0-9]{0,1})(?\/)*(?[0-9]{0,1})(?\"")*";
string regExPatt = dict["Pattern"];
public void GetTblToDictionary(string tblName)
{
try
{
string sql = "Select * from " + tblName;
List lst = new();
using (var con = new SqliteConnection(ConnString))
{
con.Open();
var command = con.CreateCommand();
command.CommandText = sql;
using (SqliteDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
try
{
Dictionary dict = new();
for (int i = 0; i < reader.FieldCount; i++)
{
//need to get literal here
Подробнее здесь: https://stackoverflow.com/questions/790 ... a-database