我有一个程序,我想在开头过滤一组“+”的字符串。例如:
+++Adam is working very well.
++Adam is working well.
+Adam is doing OK.
我如何只选择每个特定案例(即只有一个加号,只有两个加号,只有三个加号)?我通常会返回以 + 开头的任何内容。
我编译了以下正则表达式模式,但我要么只得到一个回报(通常是两个 ++),要么得到所有回报:
public static String regexpluschar = "^\\Q+\\E{1}[\\w <]";
public static String regexpluspluschar = "^\\Q+\\E{2}[\\w <]";
public static String regexpluspluspluschar = "^\\Q+\\E{3}[\\w <]";
Pattern plusplusplus = Pattern.compile(regexpluspluspluschar);
Pattern plusplus = Pattern.compile(regexpluspluschar);
Pattern plus = Pattern.compile(regexpluschar);
然后我尝试使用 Matcher 类进行查找 - 我使用了 .find() 和 .matches() 但没有得到我想要的结果(此处为 java+regex newbie alert)。
Matcher matcherplusplusplus = plusplusplus.matcher(check);
Matcher matcherplusplus = plusplus.matcher(check);
Matcher matcherplus = plus.matcher(check);
//OK we have 3+'s
if ((matcherplusplusplus.find())==true){
System.out.println("Filtering 3 +s.");
System.out.println("filter is " + filter + " in the 3 + filter.");
String toChange = getItem(i);
setItemFiltered(i, toChange);
}
//OK - we have 2 +'s
if ((matcherplusplus.find())==true){
System.out.println("Filtering 2 +s.");
System.out.println("filter is " + filter + " in the 2 + filter.");
String toChange = getItem(i);
setItemFiltered(i, toChange);
}
//OK - we have 1 +'s
if ((matcherplus.find())==true){
System.out.println("Filtering 1 +.");
System.out.println("filter is " + filter + " in the 1 + filter.");
String toChange = getItem(i);
setItemFiltered(i, toChange);
}
对于非常好奇的人,上面的 if 嵌入在一个循环中,该循环围绕一些 JTextFields 循环。完整代码在: http: //pastebin.ca/2199327