Spotfire正则表达式:提取指定单词右侧内容的方法
在Spotfire中用正则提取指定单词右侧内容的可行方案
你的需求是从格式固定的字段里提取"PM"右侧的地点内容,当前用的RXReplace([scheduled_maintenance_description],"(PM\b)","$","")之所以失效,是因为只替换了"PM"本身,没处理前面的内容,而且$在这里是无效的占位符。下面给两个直接能用的方案:
方案1:用RXReplace清空PM及之前的内容
直接把字段开头到"PM"(包括PM后面的空格)的所有内容替换为空,剩下的就是目标地点:
RXReplace([scheduled_maintenance_description], "^.*PM\s*", "", 1)
^.*PM:匹配从字段开头到"PM"的所有字符(^代表开头,.*代表任意字符任意次数)\s*:匹配"PM"后面的所有空格(避免残留空格)- 最后一个参数
1表示只替换一次(因为格式固定,只需要匹配最靠前的"PM"即可)
方案2:用RXExtract直接捕获目标内容
Spotfire的RXExtract可以直接提取正则匹配到的分组内容,写法更直观:
RXExtract([scheduled_maintenance_description], "PM\s*(.*)", 1)
PM\s*:定位到"PM"及后面的空格(.*):捕获"PM"空格之后的所有内容作为第一个分组- 最后一个参数
1表示提取第一个分组的内容
拿你的示例值"Annual Inspection PM Location 12"测试,两个方案都会返回Location 12,完全符合需求。
内容的提问来源于stack exchange,提问作者AnnonymousAsker
相关产品推荐
相关产品推荐

