2014-09-03 96 views
0

我陷入了可能非常簡單的一步。如何僅匹配第一次出現的空間

我必須符合下列文字[[StandardsEnterprise GXS Enterprise]] 和想管,以取代第一空間(「|」) 找不到只能選擇空間正則表達式。

或者,也許問題是與Java代碼。 我用java SAG的WebMethods內有以下幾點:

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方法的問題?是不是在輸入字符串上重複應用正則表達式?

對我來說你有簡單的建議嗎?

非常感謝 雷迪

回答

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]] 
+0

你好菲德,非常感謝你的答覆。我正在使用Java服務。我將指定更多的請求。 – 2014-09-03 15:54:35

+0

@ReddySK我已經爲您的需求添加了java代碼 – 2014-09-03 16:09:27

+0

非常感謝!這種方式完美的作品 – 2014-09-04 05:12:21

相關問題