我正在流中获取字符串数据,我只想保留字母数字字符。我注意到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;
是否有一个函数返回修改后的正则表达式字符串?
答案 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
中找到有关字符串函数的更多信息