Передача строки регулярного выражения в сборку - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть эта сборка SQL для удаления некоторых html-тегов из строки. Это работает очень хорошо для фиксированной строки регулярного выражения, но я бы хотел, чтобы строка регулярного выражения в качестве строкового параметра вызывалась при вызове функции.

Я попытался передать регулярное выражение в виде строки в функциюно это не сработает. Я предполагаю, что я должен передать его в другом формате.

Вот библиотека классов.

using System.Data.SqlTypes;
using System.Text.RegularExpressions;
using Microsoft.SqlServer.Server;

public class Functions
{
    [SqlFunction]
    public static SqlString RemoveHtmlTags(string inText)
    {

        // Remove html tags other than<p> <b> <h3> <i> <u> <ul> <ol> <li> <strong>
        return Regex.Replace(inText, "<\\s*?\\/?(?!(p|b|h3|i|u|ul|ol|li|strong))\\w*\\s*?>", "");
    }
}

И SQL-функция

CREATE FUNCTION [dbo].[ufn_RemoveHtmlTags](@InputText [nvarchar](max))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [HtmlTextFunctions].[Functions].[RemoveHtmlTags]
GO

Что яхотел бы иметь:

using System.Data.SqlTypes;
using System.Text.RegularExpressions;
using Microsoft.SqlServer.Server;

public class Functions
{
    [SqlFunction]
    public static SqlString RemoveHtmlTags(string inText, string regexText)
    {

       // Remove html tags other than<p> <b> <h3> <i> <u> <ul> <ol> <li> <strong>
        return Regex.Replace(inText, regexText, "");
    }

}

1 Ответ

0 голосов
/ 30 сентября 2019

SQL Server 2012. Когда я передал регулярное выражение в качестве строкового параметра, он не удалил html-теги, как это было при исправлении регулярного выражения.

...