我需要在salesforce中使用正则表达式模式来替换字符串中的所有特殊字符,除了引号之间的那些...
输入:hai@#$welcome to 'World@#$'
输出:hai welcome to 'World@#$'
我尝试了以下操作,但它没有按预期工作:
'[^\\w((?<=\')(.*)(?=\'))]'
答案 0 :(得分:3)
答案 1 :(得分:1)
答案 2 :(得分:0)
我们可以通过一个非常简单的正则表达式解决它:
'[^']*'|([^\w'\s]+)
交替|
的左侧匹配完成quoted strings
。我们将忽略这些匹配。右侧匹配并捕获第1组的特殊字符,我们知道它们是正确的,因为它们与左侧的表达不匹配。
剩下要做的就是用空字符串替换匹配,但仅在设置了组1时。每种语言的方法都不同,但并不复杂。下面的问题和文章充分解释了该技术(文章有代码示例)。
在this demo上,如果查看右侧窗格,您可以看到第1组如何仅捕获要替换的字符。
参考