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

Я использую режим регулярного выражения Notepad++.

2
eams 14 Мар 2015 в 03:53

2 ответа

Лучший ответ

В Notepad ++ включите режим регулярных выражений в диалоговом окне «Найти и заменить», затем найдите:

(?<=<p>)(.)

И замените на:

\U\1

Чтобы объяснить шаблон, который нужно сопоставить:

(?<=a)b   # A positive lookbehind, i.e. match all b that immediately follow a, but
          #   don't match the "a" itself.
(.)       # Find any character (i.e. "."), and capture it.
(?<=a)(.) # Find any character that immediately follows a, and capture it.

И замена:

\1   # The first captured substring in each match.
\Ux  # Convert x to upper case.
\U\1 # Convert the first captured substring in each match to upper case.

Обратите внимание, что это пытается преобразовать первый символ в верхний регистр. Если между <p> и буквой, которую вы хотите сделать заглавной, могут быть другие небуквенные символы, вы можете использовать шаблон:

(?<=<p>)([^A-Za-z]*)(.) 

# [^x]       Matches any character that is not x.
# [^A-Za-z]  Matches any character that is not one of the upper case 
#              or lower case letters.
# x*         Matches zero or more consecutive x.
# [^A-Za-z]* Matches zero or more consecutive characters that are not
#              upper case or lower case letters.

И заменить на

\1\U\2 # The first captured substring (any non-letter characters
       #   that immediately follow <p>) followed by the second captured
       #   substring (the first letter that appears after <p>), which 
       #   is converted to upper case.

В шаблоне, который необходимо найти, говорится: «сопоставить (и захватить в группе захвата 1) любые небуквенные символы, которые следуют сразу за <p>, а затем сопоставить (и захватить в группе захвата 2) первый символ, который следует сразу за небуквенные символы (которые, конечно, должны быть буквой, которая должна быть прописной) ". Обратите внимание, что, поскольку мы используем *, совпадение также будет результатом, если после <p> нет небуквенных символов, и в этом случае первая группа захвата будет просто содержать пустую строку.

6
jbaums 18 Авг 2015 в 19:51
/<p>\s*(.){1}/

Это будет соответствовать тегу <p>, за которым следует любой вид пробелов ноль или более раз, за ​​которым следует любой символ 1 раз, и он запомнит 1 символ, чтобы вы могли использовать его позже, чтобы преобразовать его в верхний регистр.

1
Dimitris Karagiannis 14 Мар 2015 в 01:17