RegEx - 为什么组1包含所有字符?

时间:2013-11-15 12:15:02

标签: regex

RegEx:(^.*?)\s+(.*)

搜索文字:Director ANURADHA GUPTA

替换:$1 - $2

我期待:Director - ANURADHA GUPTA

但我得到:Director ANURADHA GUPTA - Director

我想将第一个单词分成第一个单词,将第二个单词分成另一个单词组。

更新:

对不起混淆的人。我正在使用java reg ex:。这是一个Groovy脚本,解释了我想要做的事情

   import java.util.regex.Pattern    

def pattern = Pattern.compile("(^.*?)\\s(.*)");
def matcher = pattern.matcher("Director ANURADHA GUPTA");
if(matcher.matches()){
    println matcher.group(1);
    println matcher.group(2);

}

Output
Director
ANURADHA GUPTA

这个有效!我试图测试reg ex tester chrome插件:

https://chrome.google.com/webstore/detail/regexp-tester-app/cmmblmkfaijaadfjapjddbeaoffeccib?hl=en

假设它在那里工作,它也应该在java中工作。它在插件上的东西不起作用。

2 个答案:

答案 0 :(得分:1)

效率更高的是将\s+替换为" - "

参见演示 here

答案 1 :(得分:-1)

确保您在第一组中仅使用一个单词进行拆分的另一种方法是:

^(\w+)已替换为$1 -

最初的问题一定是你在整个正则表达式中占了一席之地,成为第一个捕获组。