在字符串数据中仅保留字母数字字符

时间:2019-11-13 13:26:00

标签: siddhi stream-processing wso2sp event-stream-processing

我正在流中获取字符串数据,我只想保留字母数字字符。我注意到Siddhi提供了正则表达式功能,如here所述。但问题是它返回一个布尔值而不是修改后的字符串。反正有直接获取修改后的字符串吗?这是我的代码。

@App:name("strtest")
@App:description("Description of the plan")

-- Please refer to https://docs.wso2.com/display/SP400/Quick+Start+Guide on getting started with SP editor. 

define stream InboundStream(ipstring string);

@sink(type='log', prefix='Modified string')
define stream Opstream(ropstring bool);

from InboundStream 
select str:regexp(ipstring, "^A-Za-z0-9") as ropstring insert into Opstream;

是否有一个函数返回修改后的正则表达式字符串?

1 个答案:

答案 0 :(得分:4)

您不能使用str:regexp()函数来修改字符串,它只能用于检查字符串是否与给定的字符串匹配,而是可以使用str:replaceAll()函数来删除不需要的字符,例如如下所示

@App:name("strtest")
@App:description("Description of the plan")

define stream InboundStream(ipstring string);

@sink(type='log', prefix='Modified string')
define stream Opstream(ropstring string);

from InboundStream
select str:replaceAll(ipstring,  '[^a-zA-Z0-9]', '') as ropstring
insert into Opstream;

您可以在here

中找到有关字符串函数的更多信息