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

时间:2014-08-19 04:36:06

标签: java regex

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

"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;
        }
    }

5 个答案:

答案 0 :(得分:2)

使用它:

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

演示: http://regex101.com/r/lX0dI5/3

答案 1 :(得分:0)

您可以使用带有多个选择的正则表达式从字符串

中删除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

答案 2 :(得分:0)

您可以使用以下代码

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
  • |逻辑OR运算符。
  • s\W*o\W*匹配字符串s后跟零个或多个非单词字符,后跟文字o后跟零个或多个非单词字符的字符串。< / LI>

答案 3 :(得分:0)

这对我有用:

    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 

答案 4 :(得分:0)

    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);
    }

<强>输出

String
String 
String 
String
String 
String 
String