3

我很难在 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

4 回答 4

3

我相信(虽然手头没有 TextWrangler)你需要搜索([a-z])([A-Z])并替换它:\1: \2

希望这可以帮助。

于 2012-01-06T10:36:14.150 回答
2

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

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

于 2012-01-06T10:30:58.987 回答
2

这个问题由来已久,但我偶然发现了它,所以其他人也可能如此。OP 对 Igor 回复的评论澄清了该任务的描述方式(并且可以添加到描述中)。

仅匹配 HTML 替换的那些特定于字体的行

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

\1: \2

解释:

  • (?<=[fixed-length regex])是一个积极的向后看,意思是“如果我的比赛在它之前有这个”
  • (?:48B700|C0C0C0)是一个未命名的组,仅匹配 2 种颜色。由于它们的长度相同,因此它们在后视中工作(需要具有固定长度)
  • (.*?[a-z])([A-Z])将匹配>那些开始字体标签之后的所有内容,直到您的大写字母。
  • 替换与 Igor 的响应中的\1: \2相同,只是\1它将匹配需要分离的整个第一个字符串。

添加:

您的输入字符串包含特殊字符,您要拆分的部分很可能以一个结尾。在这种情况下,他们不会被[a-z]单独抓住。您将需要添加一个字符游侠来捕获您关心的所有字母,例如

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

于 2017-05-24T18:34:30.227 回答
0

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

于 2015-11-26T07:59:21.120 回答