例如: “如何连接串行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链接
谢谢!
答案 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个大写字母的任何字母/数字组合。