如果我正在查看这样的文字:
hello bob hello hello hello
我想找到hello的第一个实例并将其取出,所以我使用这样的模式
hello
当我删除该模式时,这就是文本
bob
但我需要的是
bob hello hello hello
如何修改它以仅查找模式的第一个匹配项
答案 0 :(得分:2)
我的水晶碗告诉我你在你的正则表达式中使用了某种global
修饰符,如果你把它留下来,那么你应该得到你期望的结果。例如,在javascript中你会使用:
/hello/
而不是:
/hello/g
答案 1 :(得分:0)
在OutSystems中,正则表达式函数是通过扩展提供的,因此我假设您正在使用Text
扩展名。扩展代码映射到.NET / Java代码,对正则表达式方法的底层调用是.NET Replace(string input, string replacement)
和Java replaceAll(String replacement)
。这些将替换给定输入字符串上所有出现的正则表达式。
现在,有几种解决问题的方法......
如果要在字符串的开头替换:
在您给出的示例中,您对删除感兴趣的 hello 也位于输入字符串的开头。在这种特殊情况下,您可以使用正则表达式,例如^hello
。
如果要替换第一个匹配项,请在字符串中的任何位置
如果您有兴趣替换第一个匹配项,但可以在输入字符串中的任何位置,那么您可以编写一个表达式,如hello(.*)
,并用作替换字符串$1
。在这种情况下,$1
表示捕获组(.*)
,其中包括 hello 的所有其他出现。这适用于.NET和Java。当然,这种做事方式既不美观也不高效......
如果您想拥有更多正则表达式功能,您可以使用Integration Studio下载并打开文本扩展名并添加所需的任何新方法,但由于此扩展程序包含在平台中,可以用升级替换,我建议创建自己的扩展并使用Text扩展作为模板。您可以创建一个与当前Replace
非常相似的扩展操作,但这可能需要额外的 count 参数或类似的参数。