Регулярное выражение, чтобы найти строчную букву, а затем заглавную - PullRequest
2 голосов
/ 06 января 2012

Мне трудно использовать регулярное выражение (Grep) в TextWrangler, чтобы найти вхождения строчные буквы, а затем прописные. Например:

Это объявление означает, что студенты приветствуются.

На самом деле, я хочу разделить вхождение, добавив двоеточие, чтобы оно стало означает: студенты

Я пытался:

[a-z][A-Z]

Но это выражение не работает в TextWrangler.

* РЕДАКТИРОВАТЬ : вот точные контексты, в которых появляются вхождения (я имею в виду только с этими цветами шрифта). *

<font color =#48B700>  - Stột jlăm wẻ baOne hundred and three<br></font>

<font color =#C0C0C0>     »» Qzống pguộc lyời ba yghìm fảy dyổiTo live a life full of vicissitudes, to live a life marked by ups and downs<br></font>

"baOne" and "dyổiTo" must be "ba: One" and "dyổi: To" 

Может ли кто-нибудь помочь? Большое спасибо.

Ответы [ 4 ]

2 голосов
/ 06 января 2012

Я верю (хотя у меня нет TextWrangler), что вам нужно найти ([a-z])([A-Z]) и заменить его на: \1: \2

Надеюсь, это поможет.

1 голос
/ 24 мая 2017

Этот вопрос давным-давно, но я наткнулся на него, так что, возможно, кто-то еще. Комментарий ОП к ответу Игоря разъяснил, как задача должна быть описана (и могла быть добавлена ​​к описанию).

Чтобы соответствовать только этим специфическим для шрифта строкам HTML, замените

(?<=<font color =#(?:48B700|C0C0C0)>)(.*?[a-z])([A-Z])

с \1: \2

Пояснение:

  • (?<=[fixed-length regex]) является положительным взглядом позади и означает «если мой матч имеет это непосредственно перед ним»
  • (?:48B700|C0C0C0) - неназванная группа, которая соответствует только 2 цветам. Поскольку они имеют одинаковую длину, они работают в виде сзади (это должно быть фиксированной длины)
  • (.*?[a-z])([A-Z]) будет соответствовать всем после > этих начальных тегов шрифта вплоть до ваших заглавных букв.
  • Замена \1: \2 такая же, как в ответе Игоря, только то, что \1 будет соответствовать всей первой строке, которая нуждается в разделении.

Дополнительно:

Ваши входные строки содержат специальные символы, и часть, которую вы хотите разделить, вполне может закончиться одним. В этом случае они не будут пойманы [a-z] один. Вам нужно будет добавить символьный рейнджер, который фиксирует все буквы, которые вас интересуют , что-то вроде

(?<=<font color =#(?:48B700|C0C0C0)>)(.*?[a-zḁ-ῼ])([A-Z])

1 голос
/ 06 января 2012

Заменить ([a-z])([A-Z]) на \1:\2 - у меня нет TextWrangler, но он работает на Notepad ++

Скобки предназначены для сбора данных, на которые ссылается использование синтаксиса \1 в строке замены

0 голосов
/ 26 ноября 2015

Это правильный шаблон для определения строчных и прописных букв, однако вам нужно будет проверить соответствие, чтобы быть чувствительными к регистру в диалоге поиска / замены.

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