3 Вопрос: Atom Editor - Обтекание текста тегами с помощью регулярных выражений

вопрос создан в Thu, May 2, 2019 12:00 AM

В Atom я работаю с огромным текстовым файлом, и мне нужно обернуть все текстовые строки <li> </li>.

Например:

ELECTRICAL PRODUCTS

<li>ELECTRICAL PRODUCTS</li>

Спасибо!

    
- 1
  1. В чем здесь проблема? Кажется очень просто. Просто захватите каждую строку, используя (.*), и замените ее на <li>$1</li> или <li>\1</li>, как это поддерживается в вашем редакторе. Это то, что вам нужно? Если нет, mcve
    .
    2019-05-02 14: 54: 57Z
  2. Когда я нахожу с (. *) и заменяю на < li > $1 < /li &gt ;, ЭЛЕКТРИЧЕСКИЕ ИЗДЕЛИЯ превращаются в: < li > ЭЛЕКТРИЧЕСКИЕ ИЗДЕЛИЯ < /Li &GT; &Lt; &Li GT; &Lt; /&Li GT; &Lt; &Li GT; &Lt; /&Li GT;
    2019-05-02 15: 16: 22Z
  3. Похоже, ваши данные также содержат пустые строки, из-за чего они также совпадают с пустыми строками и выдают такой вывод. Позвольте мне добавить это как ответ, чтобы ясно объяснить.
    2019-05-02 15: 54: 56Z
  4. Добавлено в качестве ответа, пожалуйста, посмотрите. Хотя кажется, что ваша проблема уже решена, так как вы уже приняли ответ. Но просто посмотрите, не поможет ли это вам.
    2019-05-02 16: 00: 11Z
3 ответа                              3                         

Похоже, ваш текстовый файл содержит пустые строки, что нормально. Чтобы не преобразовывать пустые строки в форму <li></li>, необходимо использовать регулярное выражение, которое не соответствует чистым пустым строкам или строкам, содержащим только пробелы, поскольку нет смысла заменять только пробелы внутри тегов <li>. Вы можете лучше использовать это регулярное выражение для сопоставления непустых строк.

(\S+(?: +\S+)*)

которая группирует целую строку в group1, а затем заменяет ее на <li>$1</li>

Regex Demo

Как видите, пустые строки остаются без изменений, а все непустые строки заменяются тегами <li>.

Надеюсь, это хорошо сработает. Дайте мне знать, если возникнут какие-либо проблемы.

    
2
2019-05-02 15: 58: 37Z

Рассмотрим приведенные ниже примеры данных.

a1sd
1fasd
1fsa
f1sa
f1as
df1
saf1a
sa1
sa

Все, что вам нужно сделать, - это найти разделитель, используемый в текстовом файле. Допустим, это перевод строки, затем найдите \n и замените его на </li>\n<li> .. (это может быть \n или \r или \r \п) р>

Тогда вывод будет

a1sd</li>
<li>1fasd</li>
<li>1fsa</li>
<li>f1sa</li>
<li>f1as</li>
<li>df1</li>
<li>saf1a</li>
<li>sd1fsf</li>
<li>d1f</li>
<li>sa1</li>
<li>sa

вы можете добавить вручную в начале и конце файла.

<li>a1sd</li>
<li>1fasd</li>
<li>1fsa</li>
<li>f1sa</li>
<li>f1as</li>
<li>df1</li>
<li>saf1a</li>
<li>sd1fsf</li>
<li>d1f</li>
<li>sa1</li>
<li>sa</li>
    
2
2019-05-02 15: 27: 46Z

Сгруппируйте и замените содержимое следующим шаблоном Regex:

string li_pattern = @"(?:w+])*+(?<li>[\s\S]*?[;.\n])";
var res = Regex.Replace(text, li_pattern, @"<li>${li}</li>");

[ https://regex101.com/r/kJFzQr/1] [1] р>     

0
2019-05-02 15: 07: 55Z
источник размещен Вот