我想全部更换:)
by :D
,除非它们在引号内"
示例1:
Hey man :D, how're you? :) My friend told me "this can't be true :)"
变成
Hey man :D, how're you? :D My friend told me "this can't be true :)"
如你所见,:)
如果它被包围,则不会被替换"
。如果没有这个条件的话,那就很简单了,对吧?我使用 Javascript (jQuery) 来完成这一切。
如果使用正则表达式显然不可能做到这一点,那么替代建议是什么?
假设没有双引号不平衡,这就是适合您的正则表达式:
:\)(?=(?:(?:[^"]*"){2})*[^"]*$)
解释:该正则表达式使用正向前瞻,基本上匹配 0 次或多次出现的一对some text until a double quote is found
i.e. ([^"]*"){2}
在每场比赛的右侧(RHS):)
.
简单来说,这意味着替换:)
仅当它在双引号之外时,因为双引号内的所有匹配项都将具有奇数个[^"]*"
RHS 上的比赛。
现场演示:1。http://www.rubular.com/r/3aixZy5bYR
现场演示:2。http://ideone.com/C679NW
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)