VBA处理Access富文本如何匹配带引号多词、无引号单名的font属性
调整后的正则与完整代码
你可以把原有匹配字体属性的正则替换为适配三种写法的规则,同时可优化字号匹配规则,适配多位数字号场景:
With objRegEx .Global = True ' 替换字体大小,优化后支持匹配1位以上的字号(如12、16号) .Pattern = "size=[0-9]+" strText = .Replace(strText, " size=" & nSize) ' 替换字体名称,兼容单引号、双引号、无引号三种写法 .Pattern = "face=(?:([""'])(.*?)\1|([^\s>]+))" ' 替换时统一用双引号包裹字体名,避免后续富文本解析出问题 strText = .Replace(strText, "face=""" & strFont & """") End With
如果你的富文本中字体属性的名称是font而非face,只需把正则开头的face=替换为font=即可适配。
正则规则说明
(?:)为非捕获分组,内部用|拆分两种匹配场景- 第一种场景
([""'])(.*?)\1:匹配被单/双引号包裹的字体名,先捕获开头的引号类型,中间非贪婪匹配所有内容,直到遇到相同的闭合引号为止,适配带空格的多词字体名 - 第二种场景
([^\s>]+):匹配无引号包裹的字体名,连续匹配所有非空格、非标签闭合符>的字符,适配无空格的单字体名称 - 替换时统一给字体名加双引号,能保证输出的富文本属性格式统一,避免无引号字体名带空格时解析错误。
内容的提问来源于stack exchange,提问作者mriksman
相关产品推荐
相关产品推荐

