正则表达式,用于查找小写字母后跟大写字母

时间:2012-01-06 10:25:38

标签: regex grep textwrangler

我很难在TextWrangler中使用正则表达式(Grep)来查找小写字母后跟大写字母的出现次数。例如:

此声明意味着学生是受欢迎的。

事实上,我想通过添加冒号来分割事件,使其成为意味着:学生

我试过了:

[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 个答案:

答案 0 :(得分:2)

我确实相信(手边没有TextWrangler)您需要搜索([a-z])([A-Z])并将其替换为:\1: \2

希望这有帮助。

答案 1 :(得分:1)

([a-z])([A-Z])替换为\1:\2 - 我没有TextWrangler,但它适用于Notepad ++

括号用于捕获数据,在替换字符串中使用\1语法引用该数据

答案 2 :(得分:1)

这个问题已经很久了,但我偶然发现了,所以其他人也可能。 OP's comment to Igor's response阐明了如何描述任务(并且可以添加到描述中)。

仅匹配HTML替换

的特定于字体的行

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

\1: \2

说明:

  • (?<=[fixed-length regex])positive lookbehind,意思是&#34;如果我的匹配就在它之前,那么<#34;
  • (?:48B700|C0C0C0)是一个未命名的组,仅匹配2种颜色。因为它们具有相同的长度,所以它们在后面工作(需要具有固定长度)
  • (.*?[a-z])([A-Z])会在>个字体标记开头到大写字母后匹配所有内容。
  • \1: \2替换与Igor的回复相同,只是\1将匹配需要分离的整个第一个字符串。

增加:

您的输入字符串包含特殊字符,您要拆分的部分可以很好地结束。在这种情况下,他们不会被[a-z]单独抓住。您需要添加捕获all the letters you care about的字符范围,例如

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

答案 3 :(得分:0)

这是识别小写和大写字母的正确模式,但是,您需要在查找/替换对话框中检查匹配是否区分大小写。