如何使用正则表达式将java中的最后一个字母替换为另一个字母

如何使用正则表达式将java中的最后一个字母替换为另一个字母,java,regex,letter,Java,Regex,Letter,我已经看到用“$”、$”替换“,”到“.”,但此逻辑无法使用字母表。 我需要将一个单词的最后一个字母替换为另一个字母,用于包含使用java的示例测试的字符串中的所有单词 这是我的密码 Pattern replace = Pattern.compile("n$");//here got the real problem matcher2 = replace.matcher(EXAMPLE_TEST); EXAMPLE_TEST=matcher2.replaceAll("k"); 我还

我已经看到用“$”、$”替换“,”到“.”,但此逻辑无法使用字母表。 我需要将一个单词的最后一个字母替换为另一个字母,用于包含使用java的示例测试的字符串中的所有单词 这是我的密码

  Pattern replace = Pattern.compile("n$");//here got the real problem
  matcher2 = replace.matcher(EXAMPLE_TEST);
  EXAMPLE_TEST=matcher2.replaceAll("k");
我还尝试了“//n$”、“\n$”等 请帮我找到解决办法 输入文本=>njan ayman
输出文本=>njak aymak

您可以使用前瞻和组匹配:

   String EXAMPLE_TEST = "njan ayman";
    s = EXAMPLE_TEST.replaceAll("(n)(?=\\s|$)", "k");
    System.out.println("s = " + s); // prints: s = njak aymak
说明:

(n) - the matched word character
(?=\\s|$) - which is followed by a space or at the end of the line (lookahead)
以上只是一个例子!如果要用句点切换每个逗号,中间行应更改为:

s = s.replaceAll("(,)(?=\\s|$)", "\\.");

您可以使用前瞻和组匹配:

   String EXAMPLE_TEST = "njan ayman";
    s = EXAMPLE_TEST.replaceAll("(n)(?=\\s|$)", "k");
    System.out.println("s = " + s); // prints: s = njak aymak
说明:

(n) - the matched word character
(?=\\s|$) - which is followed by a space or at the end of the line (lookahead)
以上只是一个例子!如果要用句点切换每个逗号,中间行应更改为:

s = s.replaceAll("(,)(?=\\s|$)", "\\.");

使用


使用


下面是我将如何设置它:

(?=。\b)\w

在Java中,需要如下转义:

(?=。\\b)\\w

它被翻译成类似“单词(\b)末尾任何单个字符(.)之后的字符(\w)”

这将删除所有单词的最后一个字符,但留下以下非字母数字字符。通过将
更改为其他内容,只能指定要删除/替换的特定字符


但是,其他答案都非常好,可能会完全满足您的要求。

以下是我的设置方法:

if (word.endsWith("char oldletter")) {
    name = name.substring(0, name.length() - 1 "char newletter");
}
(?=。\b)\w

在Java中,需要如下转义:

(?=。\\b)\\w

它被翻译成类似“单词(\b)末尾任何单个字符(.)之后的字符(\w)”

这将删除所有单词的最后一个字符,但留下以下非字母数字字符。通过将
更改为其他内容,只能指定要删除/替换的特定字符



但是,其他答案都非常好,可能会完全达到您想要的结果。

您的输入中最后没有字母
n
。您的输入和预期输出是什么?您应该提供一个示例输入/输出和预期输出。您的表达方式:“字符串中所有单词的最后一个字母对应另一个字母”听起来您希望用空格替换任何字母:
(\w)(?=\s)
字符串示例\u TEST=“njan ayman”;它包含我希望打印输出“njak aymak”@Ayman,而不是将预期输出放在注释中,而是放在实际问题中。输入的最后没有字母
n
。您的输入和预期输出是什么?您应该提供一个示例输入/输出和预期输出。您的表达方式:“字符串中所有单词的最后一个字母对应另一个字母”听起来您希望用空格替换任何字母:
(\w)(?=\s)
字符串示例\u TEST=“njan ayman”;它包含我希望打印输出的“njak aymak”@Ayman,而不是将预期的输出放在评论中,而是放在你的实际问题中。@AvinashRaj没关系,
n
只是一个例子,OP说他尝试用句点切换逗号,这意味着他必须使用:
s=s.replaceAll((,)(?=\\s|$),“\”当然不是。同样,上面的代码是一个示例,OP必须根据自己的需要切换匹配组中的表达式:可以是
(,)
(n)
(\\w)
,或者其他任何形式。假设我如何在空格之前找到n,事实上,我正在努力使英语成为马来语transilitration@Ayman我不明白你的问题:这个答案正好说明了这一点:如何识别空白前的
n
。@AvinashRaj没关系,
n
只是一个例子,OP说他尝试用句点来切换逗号,这意味着他必须使用:
s=s.replaceAll((,)(?=\\s |$),“\\”当然不是。同样,上面的代码是一个示例,OP必须根据自己的需要切换匹配组中的表达式:可以是
(,)
(n)
(\\w)
,或者其他任何形式。假设我如何在空格之前找到n,事实上,我正在努力使英语成为马来语transilitration@Ayman我不明白你的问题:这个答案正好说明了它:如何识别出现在空白之前的
n
。这个甚至可以编译吗?这个甚至可以编译吗?
if (word.endsWith("char oldletter")) {
    name = name.substring(0, name.length() - 1 "char newletter");
}