我很难在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"
有人可以帮忙吗?非常感谢。
答案 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)
这是识别小写和大写字母的正确模式,但是,您需要在查找/替换对话框中检查匹配是否区分大小写。