繁体   English   中英

使用正则表达式从字符串中删除可能的序列?

[英]Remove possible sequences from a string using regular expressions?

我有一个字符串列表,有些(不是全部)结尾是:

"StringSignOut"
"String Sign Out"
"String SIGNOUT"
"StringSO"
"String SO"
"String S.O."
"StringS.O."

我想摆脱所有的退出和SO,但我不确定如何执行此模式。

    private static String getGroup(String s, String pat, int g) {
        Pattern p = Pattern.compile(pat);
        Matcher m = p.matcher(s);
        if (m.matches()) {
            return m.toMatchResult().group(g);
        } else {
            return null;
        }
    }

用这个 :

(?:\s*Sign\s*Out|\s*S\W?O\W?)

演示在这里: http : //regex101.com/r/lX0dI5/3

您可以使用正则表达式进行多项选择,以从字符串中删除SO/signout

样品:

 String [] s = {    "StringSignOut",
                         "String Sign Out",
                         "String SIGNOUT",
                         "StringSO",
                         "String SO",
                         "String S.O.",
                         "StringS.O."};
     for(String s2 : s)
     {
         System.out.println(s2.replaceAll("SignOut| Sign Out| SIGNOUT|SO| SO| S.O.|S.O.", ""));
     }

结果:

String
String
String
String
String
String
String

您可以使用以下代码,

String [] s = {    "StringSignOut",
             "String Sign Out",
             "String SIGNOUT",
             "StringSO",
             "String SO",
             "String S.O.",
             "StringS.O."};
   for(String s2 : s)
     {
    System.out.println(s2.replaceAll("(?i)\\s*(?:sign\\s*out|s\\W*o\\W*)", ""));
    }

输出:

String
String
String
String
String
String
String

模式说明:

  • (?i)不区分大小写的修饰符。
  • \\s*匹配零个或多个空格字符。
  • (?:...)非捕获组。
  • sign\\s*out匹配字符串符号,后跟零个或多个空格,再次匹配字符串out
  • | 逻辑或运算符。
  • s\\W*o\\W*匹配具有立即数后跟零个或多个非单词字符的立即数s的字符串,再匹配紧随其后为零个或多个非单词字符的立即数o字符串。

这为我工作:

    String[] strings = new String[] {"StringSignOut","String Sign Out","String SIGNOUT","StringSO","String SO","String S.O."};
    for(String str : strings)
    {
        System.out.println(str.replaceAll("(?i)(sign\\s*out)|(s\\.?o\\.?)",""));
    }

产量:

String
String 
String 
String
String 
String 
    String[] arr = {"StringSignOut", "String Sign Out", "String SIGNOUT", "StringSO", "String SO", "String S.O.", "StringS.O."};

    String[] replace = {"SO", "SignOut", "Sign Out", "SIGNOUT", "S.O."};
    for (String s : arr) {
        String tmp = s;
        for (String rep: replace) {
            tmp = tmp.replace(rep, "");
        }
        System.out.println(tmp);
    }

OUTPUT

String
String 
String 
String
String 
String 
String

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM