【发布时间】:2019-03-29 10:54:08
【问题描述】:
我正在使用 TIBCO Spotfire Analyst 7.8.0 HF-007 并尝试添加计算列以使用 RXReplace 函数中的正则表达式为字符串创建缩写。但是,我收到一条错误消息,指出“无效的转义序列:“\B”。”这似乎无法识别非单词边界。
函数确实识别单词边界“\b”。我已经搜索了非单词边界 ("\B") 表达式的替代方法,但没有找到。
函数调用如下:RXReplace([Hospital_Name],"\B[a-zA-Z'-]+","","g")
是否有替代“\B”或其他缩写词组的方法(例如,“MY HOSPITAL'S NAME” > “MHN”)?
【问题讨论】:
-
这里不要使用
\B,因为后面跟一个字母或者'/-的意思是不一样的。这里的规则是什么?您希望匹配发生在什么环境中?试试RXReplace([Hospital_Name], "\\b([a-zA-Z])\\S*", "$1", "g")。此外,您似乎可以将反斜杠加倍,RXReplace([Hospital_Name],"\\B[a-zA-Z'-]+","","g") -
@WiktorStribiżew 感谢您的回复。我不确定你所说的上下文是什么意思。我在医院名称上使用表达式(例如,“Riverview 社区医院”),并希望表达式返回字符串中每个单词的第一个字母(例如,“RCH”)。
-
@WiktorStribiżew 谢谢。我按照您的建议尝试了 RXReplace([Hospital_Name],"\\B[a-zA-Z'-]+","","g") 并获得了它们之间有空格的字母(“R C H”)。我应该如何修改表达式以获得没有空格的字母?
-
"\\B[a-zA-Z'-]+|\\s+" -
或
"\\B[a-zA-Z'-]+|\\W+"
标签: regex calculated-columns spotfire tibco