1

如果我正在浏览这样的文本:

hello bob hello hello hello

我想找到hello的第一个实例并将其取出,所以我使用这样的模式

hello

当我擦除那个图案时,这就是文本

bob

但我需要的是

bob hello hello hello

如何修改它以仅找到模式的第一次出现

4

2 回答 2

2

我的水晶碗告诉我你在你的正则表达式中使用了某种global修饰符,如果你把它去掉,那么你应该得到你期望的结果。例如,在 javascript 中,您将使用:

/hello/

代替:

/hello/g
于 2013-04-22T17:21:43.230 回答
1

在 OutSystems 中,正则表达式函数是通过扩展提供的,所以我假设您正在使用Text扩展。扩展代码映射到 .NET/Java 代码,并且对正则表达式方法的底层调用Replace(string input, string replacement)用于 .NET 和replaceAll(String replacement)Java。这些都将替换给定输入字符串上出现的所有正则表达式。

现在,有几种方法可以解决您的问题...

如果要替换字符串的开头: 在您给出的示例中,您有兴趣删除的hello也在输入字符串的开头。在这种特殊情况下,您可以使用正则表达式,例如^hello.

如果您想替换字符串中的任何位置的第一个匹配项: 如果您有兴趣替换第一个匹配项,但它可以是输入字符串中的任何位置,那么您可以编写一个表达式,例如hello(.*)并用作替换字符串$1。在这种情况下,$1这意味着捕获组(.*)将包括所有进一步出现的hello。这适用于.NETJava。当然,这种做事方式既不漂亮也不高效,所以......

如果您想拥有更多正则表达式功能:您可以使用 Integration Studio 下载并打开 Text 扩展并添加您想要的任何新方法,尽管由于此扩展包含在平台中并且可以通过升级替换,我会建议创建您自己的扩展并使用 Text 扩展作为模板。您可以创建一个与当前非常相似的扩展操作,Replace但这可能需要一个额外的计数参数或类似的东西。

于 2013-04-23T08:42:45.610 回答