【问题标题】:Regular expression to find a lowercase letter followed by an uppercase正则表达式查找一个小写字母后跟一个大写字母
【发布时间】:2012-02-04 02:19:16
【问题描述】:

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

有人可以帮忙吗?非常感谢。

【问题讨论】:

    标签: regex grep textwrangler


    【解决方案1】:

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

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

    (?&lt;=&lt;font color =#(?:48B700|C0C0C0)&gt;)(.*?[a-z])([A-Z])

    \1: \2

    解释:

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

    加法:

    您的输入字符串包含特殊字符,您要拆分的部分很可能以一个结尾。在这种情况下,[a-z] 不会单独抓住他们。您将需要添加一个捕获all the letters you care about 的角色游侠,例如

    (?&lt;=&lt;font color =#(?:48B700|C0C0C0)&gt;)(.*?[a-zḁ-ῼ])([A-Z])

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        括号是用来抓取数据的,在替换字符串中使用\1语法引用

        【讨论】:

        • 谢谢,阿马戈什。但它仍然不起作用。无论如何,我的文档包含 HTML 标签,表达式似乎包含字体标签之间的所有内容。
        • 谢谢,但在 TextWrangler 中仍然没有运气。我没有适用于 Mac 的 Notepad++ :( 尝试一下。
        【解决方案4】:

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

        希望这会有所帮助。

        【讨论】:

        • 不!它只会找到任何相邻的字母。
        • 任何相邻的字母,甚至是两个小写字母?那么也许您需要勾选“区分大小写”框?
        • 这正是问题所在。太感谢了!但现在它转向另一个问题:它找到并替换所有值,甚至将不需要的 FileMaker 替换为 File: Maker。
        • 很遗憾,您没有描述文本的性质。当然,我建议的表达式会查找任何大写字母之后的任何小写字母,无论上下文如何。也许如果您给我们一个文本示例,我们将能够提供更好的解决方案。
        • 仍然不清楚什么必须用冒号隔开,什么应该保持不变。
        最近更新 更多