如何仅匹配第一次出现的空格

时间:2014-09-03 15:23:42

标签: java regex

我被困在可能非常简单的一步。

我有以下文字[[StandardsEnterprise GXS Enterprise]] 并希望用管道替换第一个空格(“|”) 找不到正则表达式只选择空格。

或者,问题可能在于Java代码。 我在SAG WebMethods中使用java,其中包括:

    IDataCursor pipelineCursor = pipeline.getCursor();
    String regex = IDataUtil.getString(pipelineCursor, "regex");
    String input = IDataUtil.getString(pipelineCursor, "input");
    String replacement = IDataUtil.getString(pipelineCursor, "replacement");
    pipelineCursor.destroy();

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(input);
    String output = matcher.replaceAll(replacement);

    ....

.replaceAll方法不存在问题吗?是不是在输入字符串上反复应用正则表达式?

对我有简单的建议吗?

非常感谢 雷迪

1 个答案:

答案 0 :(得分:0)

您只需要通过管道替换空格一次。

使用正则表达式这是一件非常简单的事情:

\s+

<强> Working demo

根据您使用的语言,您可以执行...

PHP

textpop-up
$re = "/\\s+/"; 
$str = "[[StandardsEnterprise GXS Enterprise]]"; 
$subst = '|'; 

$result = preg_replace($re, $subst, $str, 1);

JAVASCRIPT

var re = /\s+/; 
var str = '[[StandardsEnterprise GXS Enterprise]]';
var subst = '|'; 

var result = str.replace(re, subst);

PYTHON

import re
p = re.compile(ur'\s+')
test_str = u"[[StandardsEnterprise GXS Enterprise]]"
subst = u"|"

result = re.sub(p, subst, test_str)

JAVA

String result = "[[StandardsEnterprise GXS Enterprise]]".replaceFirst("\\s+", "|");
System.out.println(result);
// Prints:
// [[StandardsEnterprise|GXS Enterprise]]