相关疑难解决方法(0)

将Java正则表达式的第1组替换为替换整个正则表达式

我有一个只有一个组的正则表达式模式.我需要在模式后面的输入字符串中查找文本并仅替换匹配组1.例如,我有正则表达式模式和要应用的字符串,如下所示.替换字符串是"<---->"

Pattern p = Pattern.compile("\\w*(lan)\\w+");
Matcher m = p.matcher("plan plans lander planitia");
Run Code Online (Sandbox Code Playgroud)

预期的结果是

plan p<--->s <--->der p<--->itia
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法

    String test = "plan plans lander planitia";
    Pattern p = Pattern.compile("\\w*(lan)\\w+");
    Matcher m = p.matcher(test);
    String result = "";
    while(m.find()){
        result = test.replaceAll(m.group(1),"<--->");
    }
    System.out.print(result);
Run Code Online (Sandbox Code Playgroud)

这给出了结果

p<---> p<--->s <--->der p<--->itia
Run Code Online (Sandbox Code Playgroud)

另一种方法

    String test = "plan plans lander planitia";
    Pattern p = Pattern.compile("\\w*(lan)\\w+");
    Matcher m = p.matcher(test);
    String result = "";
    while(m.find()){
        result = test.replaceAll("\\w*(lan)\\w+","<--->");
    }
    System.out.print(result);
Run Code Online (Sandbox Code Playgroud)

结果是

plan <---> <---> <--->
Run Code Online (Sandbox Code Playgroud)

我已经通过了 …

java regex

9
推荐指数
1
解决办法
2万
查看次数

如何捕获和重用与Java正则表达式的匹配?

我正在努力记住在Java中使用find-replace regex匹配的正确表示法.

说我有字符串

    String s = "My name is ''Eric'' and I have a bee called ''Eric'' 
and a fish called ''Wanda''."
Run Code Online (Sandbox Code Playgroud)

我想做类似以下的事情:

s.replaceAll("\'\'$$\'\'", "$$");
Run Code Online (Sandbox Code Playgroud)

给:我的名字是Eric,我有一只名叫Eric的蜜蜂和一只名叫Wanda的鱼.

但我知道$$不是正确的符号来捕捉''中的任何内容并用它来代替找到的匹配.

我在这里寻找的特别符号是什么?

提前致谢.

戴夫.

java regex

8
推荐指数
1
解决办法
2853
查看次数

在Java中每隔三个逗号分割一个String

我有一个看起来像这样的字符串:

0,0,1,2,4,5,3,4,6
Run Code Online (Sandbox Code Playgroud)

我想要的是返回的是String[]每三个逗号后分割的内容,因此结果如下所示:

[ "0,0,1", "2,4,5", "3,4,6" ]
Run Code Online (Sandbox Code Playgroud)

我发现了类似的功能,但它们没有分成第n个逗号.

java arrays split comma

8
推荐指数
3
解决办法
6540
查看次数

在string.replaceAll方面需要帮助

我需要替换一个字符串:

"abc.T.T.AT.T"
Run Code Online (Sandbox Code Playgroud)

到一个字符串,所有单个T被替换为TOTlike

"abc.TOT.TOT.AT.TOT"
Run Code Online (Sandbox Code Playgroud)

strings.replaceAll 不为此工作.

java regex string

4
推荐指数
1
解决办法
185
查看次数

Java Regex替换为捕获组

可能重复:
Java Regex替换为捕获组

有没有办法用修改后的捕获组内容替换正则表达式?

例:

Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher(text);
resultString = regexMatcher.replaceAll("$1"); // *3 ??
Run Code Online (Sandbox Code Playgroud)

而且我想用$ 1替换所有出现次数乘以3.

编辑:

看起来,有些不对劲:(

如果我使用

Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher("12 54 1 65");
try {
    String resultString = regexMatcher.replaceAll(regexMatcher.group(1));
} catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

它抛出IllegalStateException:找不到匹配项

Pattern regex = Pattern.compile("(\\d{1,2})");
Matcher regexMatcher = regex.matcher("12 54 1 65");
try {
    String resultString = regexMatcher.replaceAll("$1");
} catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

工作正常,但我不能改变$ 1 :(

EDIT2:

现在,它的工作:)

java regex

2
推荐指数
1
解决办法
7509
查看次数

Java RegEx:如何仅提取模式匹配的可变部分

请考虑您有以下字符串:

id: 1 name: Joe age: 27 id: 2 name: Mary age:22
Run Code Online (Sandbox Code Playgroud)

并且你想在"年龄:"之后提取每个标记,但不是字符串"age:"本身.

所以我希望我Matchergroup()回归27和22而不是"年龄:27"和"年龄:22"

有没有办法在Java Regex语法中指定这个指令,这看起来与Perl中的指令完全不同,在Perl中我学习了我的Regex基础知识?

这是我的代码:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegExTest 
{
    public static void main(String[] args) 
    {
        Pattern namePtrn = Pattern.compile("age: *\\w*");

        String data = "id: 1 name: Joe age:27 id: 2 name: Mary age:22";

        Matcher nameMtchr = namePtrn.matcher(data);

        while(nameMtchr.find())
        {
            String find = nameMtchr.group();

            System.out.println ("\t" + find);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在Perl中,我可以使用{}来限制我想要提取的模式部分

while($text =~ m/(age:{\w+})/g)
{
      my $find = $1;

      if($find) …
Run Code Online (Sandbox Code Playgroud)

java regex

2
推荐指数
1
解决办法
8125
查看次数

标签 统计

java ×6

regex ×5

arrays ×1

comma ×1

split ×1

string ×1