RegEx для замены элементов тега в HTML для SQL Server - PullRequest
0 голосов
/ 30 апреля 2019

В таблице базы данных SQL Server у меня есть такой столбец:

<p>Radio and television.</p><p>very popular in the world today.</p><p>Millions of people watch TV. </p><p>That’s because a radio is very small <span_style=":_black;">98.2%</span></p><p>and it‘s easy to carry. <span_style=":_black;">haha100%</span></p>

Я хочу удалить <p> и </p> и <span_style=":_black;"> и </span> и все элементы тегов в HTML.

Текст, который я в конечном итоге хочу, выглядит следующим образом:

Radio and television.very popular in the world today.Millions of people watch TV.That’s because a radio is very small 98.2% and it‘s easy to carry.haha100%

Я хочу сделать это с помощью регулярных выражений. Но я не могу найти регулярное выражение для решения этой проблемы.

Что мне делать?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

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

DECLARE @html nvarchar(MAX) = N'<p>Radio and television.</p><p>very popular in the world today.</p><p>Millions of people watch TV. </p><p>That’s because a radio is very small <span_style=":_black;">98.2%</span></p><p>and it‘s easy to carry. <span_style=":_black;">haha100%</span></p>';

SET @html=REPLACE(@html,'span_style','span style') -- wrong tag

DECLARE @xml xml = @html

-- demo with variable
SELECT t.c.value('.','varchar(max)') AllText
FROM @xml.nodes('/') t(c)

-- demo with query
SELECT (SELECT t.c.value('.','varchar(max)') FROM q.xml_col.nodes('/') t(c)) AllText
FROM
  (
    -- your query with a xml-column is here
    SELECT CAST(@html AS xml) xml_col -- row 1
    UNION ALL
    SELECT CAST(@html AS xml) xml_col -- row 2
  ) q
0 голосов
/ 30 апреля 2019

Этот RegEx может помочь вам сделать это:

 ((\<)[\w\/\=\x22\x27\:-;]+(>))

Вам нужно только добавить любые другие символы, которые у вас могут быть, например пробел :

 [\w\/\=\x22\x27\:-;]
  • Вы можете просто заменить $ 1 пустой строкой, используя ваши коды.
  • Вы могли бы также рассмотреть возможность перехода с других требований к приложениям и мета-языкам, которые у вас есть.
  • Вы также можете упростить это регулярное выражение, если хотите:

enter image description here

Что касается специальных символов, вы можете проверить Unicode / ASCII на основе вашего желаемого языка .

Вы можете просто добавить его в RegEx. Например, если у вас есть специальные кавычки , вы можете обновить их подобно this RegEx :

((\<)([\w\/\=\"\'\‘\:\’\-;\s]+)(>))

Этот RegEx довольно прост для понимания:

  • У него есть простая левая граница, <</kbd>, в группе захвата, чтобы быть в безопасности

     ((\<)
    
  • Он имеет простую правую границу: > , в группе захвата просто для безопасности

     (>))
    
  • Имеется средняя группа захвата, в которую должны быть включены все ваши символы:

     ([\w\/\=\"\'\‘\:\’\-;\s]+) 
    

Затем он объединяет эти три группы захвата в группу, что на самом деле необязательно, просто для безопасности добавляется дополнительная граница.

enter image description here

Я не знаю о серверах SQL, но это почта может помочь вам разработать запрос для этого.

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