【发布时间】:2018-01-22 20:48:54
【问题描述】:
这是我的 Java 代码:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String a = in.nextLine();
String pattern = "^co[a-z|A-Z]e$";
String b = a.replaceAll(pattern,"1");
System.out.print(b);
我只需要将单词“code”或任何带有“co'[a-z|A-Z]'e”的单词替换为'1',但它似乎只在输入字符串为“code”时才有效,没有别的
示例输入:codexxccope
预期输出:1xxc1
我的输出:codexxccope
示例输入 2:code
我的输出:1
有什么建议吗?
【问题讨论】:
-
使用
String pattern = "\\bco[a-zA-Z]e\\b"; -
^代表字符串开始,$代表字符串结束。这意味着只有当整个字符串匹配时才会替换该模式。 -
另外,在字符类中,
|符号是一个普通字符。如果您只想匹配大小写拉丁字母,则只需将其从字符类中完全删除即可。 -
@WiktorStribiżew,它仍然无法正常工作,输出相同
-
抱歉,只删除锚点,使用
String pattern = "co[a-zA-Z]e";