正则表达式匹配大写单词并替换为大写

时间:2014-09-09 07:23:13

标签: ruby regex match uppercase

例如: “如何连接串行ATA硬HP 3D驱动器”

我想用红宝石中的正则表达式将“ATA”替换为“Ata”,但不包括“3D”。主要是英语单词。

另一个例子: “CD / DVD存储钱包-80 PCS尼龙”=> “CD / DVD存储钱包-80片尼龙”

D-Link DGS-1005G 6PORT CORRECT RESOURCES => D-Link Dgs-1005G 6Port正确资源

HP85 C9429A OEM PUT返回BETWEEN => HP85 C9429A OEM将回报置于

之间

FOREXAMPLE INDENT76 469-FUNCTIONS,10x2 LINKS =>例如Indent76 469-函数,10x2链接

谢谢!

1 个答案:

答案 0 :(得分:1)

你必须定义你认为是破坏字符的标点符号。例如,我可以从您的示例中推断出您不想​​在/上打破单词(因为CD/DVD),但您确实希望在-上打破它们(因为WALLET-80)。

这样的正则表达式将是:

(?<=$|[-\s])\p{Lu}+(?=$|[-\s])

演示:http://regex101.com/r/nS7xB0/1

将自己的分词符号添加到[-\s]括号中。


编辑:好的,根据您的反馈,这里有另一个正则表达式:

\b(?=(?:\w*?\p{Lu}){3})\w+\b

这个将匹配包含至少3个大写字母的任何字母/数字组合。

演示:http://regex101.com/r/nS7xB0/2