正则表达式 - 使用replaceAll()替换单词但保留大小写

时间:2015-08-09 11:30:53

标签: java regex

我最近开始学习正则表达式。在这里,我有一个代码,一个字。如果它有" as"在其中,它根据条件替换/追加。

条件:

  1. 如果" as"在这个词的开头(如宇航员)然后删除单词" as" (结果将是" tronaut")。

  2. 如果" as"在单词的末尾(比如has)然后添加k;留一个空间;追加"?" (比如" hask?")。

    import java.util.Scanner;
    import java.util.regex.*;
    
    public class test {
        public static void main(String args[])
        {
            System.out.print("Enter a string : ");
            Scanner console = new Scanner(System.in);
            String input = console.nextLine();
            Pattern frontPattern,backPattern;
            Matcher matcher;
            frontPattern = Pattern.compile("^(?i)as");
            matcher = frontPattern.matcher(input);
            if(matcher.find())
            {
                String replaced = matcher.replaceAll("");
                System.out.println(replaced);
            }
            backPattern = Pattern.compile("(?i)as$");
            matcher = backPattern.matcher(input);
            if(matcher.find())
            {
                String replaced = input.replaceAll("(?i)(as)","$1k ?");
                System.out.println(replaced);
            }
        }
    }
    
  3. 我面临的问题是......如果输入是" LAS"然后所需的输出是" LASK?"但我不知道如何维持这个案子。它打印" Lask?"

1 个答案:

答案 0 :(得分:2)

检查匹配的字符串是否为小写的条件。

backPattern = Pattern.compile("(?i)as$");
matcher = backPattern.matcher(input);
if(matcher.find())
{
   if(matcher.group().isLowerCase()) {
    String replaced = matcher.replaceAll("ask ?");
    System.out.println(replaced);}
    else{
    String replaced = matcher.replaceAll("ASK ?");
    System.out.println(replaced);}
}