[英]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;
}
}
您可以使用正则表达式进行多项选择,以从字符串中删除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.