2016-10-12 2 views
2

Im пытается получить RegEx для работы, который удалит все пробелы между угловыми скобками текста. Но я не могу пройти мимо этой конкретной проблемы:Notepad ++ Удалить s между скобками

Во-первых, это RegEx я работаю над

([<].*\s[>]) 

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

<tagname>foreign text with space that needs to stay like this</endtag>

иногда, хотя, они будут выглядеть неисправные (теги с пробелами между ними):

<ta gname>foreign text with space that needs to stay like this< /endtag> 

Мое выражение терпит неудачу, потому что она будет включать в себя все, от первого < до последнего> , Я думал о том, как подойти к этой проблеме, и я думаю, что это можно сделать, если я удалю все \ s, которые граничат с латинским текстовым символом (теги являются единственными латинскими символами в текстах). Так я думал, что-то вроде:

([<>]\s\?[A-Za-z]\s\?[<>]) 

И заменить его

\1^\s 

Но, видимо, это не так просто.

ответ

2

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

(?:\G(?!^)|<)[^>\s]*\K\s++(?=[^>]*>) 

и заменить пустой строкой. Подробнее

шаблон:

  • (?:\G(?!^)|<) - либо конечное положение предыдущего успешного матча (\G(?!^)) или < символа
  • [^>\s]* - 0+ символьных, кроме > и пробельной
  • \K - опущен весь текст, сопоставленный до сих пор
  • \s++ - 1+ пробелы (сопоставимо по собственному усмотрению для повышения производительности)
  • (?=[^>]*>) - проверка, которая требует символов 0+, кроме >, а затем > сразу после 1+ пробелов.

enter image description here

+0

Спасибо, это работает отлично. RegEx также определяет, что после '<' не может быть прекращенной строки до появления '>'. Последний оператор действительно очень помог! Я хотел бы попробовать его на это: '([<][^>] *> [] *>)', чтобы проверить, если каждая скобка закрывается, чтобы убедиться, что нет двойников, как или user80407

+0

'([<][^>] *> [] *>) 'работал иначе, чем ожидалось. Он соответствует этим строкам: '/tag>'.Он не соответствует '> тегу>' и ' user80407

+1

Извините, это звучит как еще один вопрос. Пожалуйста, не стесняйтесь спрашивать. Однако имейте в виду, что проверка вложенных тегов не является лучшей задачей для регулярного выражения. –

Смежные вопросы