如何只获得一组?

时间:2014-01-26 19:03:58

标签: regex

我无法编写将会出现的正则表达式:

  • 删除空格/ s
  • 删除字符(ae)
  • 仅返回一组数字,并且应匹配2000-4999之间的数字

我的模式应采用以下格式:

"5. 282 ae"

我在下面尝试过正则表达式,但它没有用。

regex([2-4]\.\s[0-9][0-9][0-9]\s\w\w)

1 个答案:

答案 0 :(得分:1)

在TextPad中,这有效:

查找内容:([2-4])\.\s+(\d\d\d)\s+ae 替换为:$1$2

它确实将5. 282 ae替换为3. 278 ae,将3278替换为4. 113 ae

您可以在此处尝试:http://fiddle.re/vt73v

4113

输出:

   import  java.util.regex.Pattern;
   import  java.util.regex.Matcher;
/**
   <P>{@code java Regex2000To4999Xmpl}</P>
 **/
public class Regex2000To4999Xmpl  {
   public static final void main(String[] XXX)  {

      Pattern p = Pattern.compile("^([2-4])\\.\\s+(\\d\\d\\d)\\s+ae$");

      String sD1d2 = "$1$2";

      replace(p, "5. 282 ae", sD1d2);
      replace(p, "3. 278 ae", sD1d2);
      replace(p, "4. 113 ae", sD1d2);
   }
   public static final void replace(Pattern p_p, String s_findWhat, String s_replaceWith)  {
      System.out.println(p_p.matcher(s_findWhat).replaceFirst(s_replaceWith));
   }
}