Java匹配模式

时间:2015-02-26 12:44:29

标签: java regex string-matching matcher

我有一个字符串列表:ab10sdj,ba1wqa,cd03asce,dfasc等。我正在寻找从ab开始或用ba开头的字符串中的数字组。

因此,如果一个字符串以ab / ba开头,我需要在它们之后的数字组。如果我有办法通过java matcher / regex实现这个目的?

2 个答案:

答案 0 :(得分:1)

抱歉发布此作为答案,但我目前的声誉级别不允许我'评论'......但是:)

由于只是回答一个相对简单的问题(不会侮辱你的智力),我可以帮助诊断解决方案。尝试一步一步地在脑海中思考问题。那就是:

  1. 如何测试字符串中的前2个字符?
  2. 如果第1点的测试通过(IE,它们是ab或ba),那么如何处理字符串的其余部分以仅测试“数字”?
  3. 当您达到非数字时,如何停止处理'数字'?
  4. 一旦你有了ab / ba前缀,只在测试条件后立即提取'数字',你将如何处理提取的数字?
  5. 在考虑将数字放在基本类型之前,您可能希望考虑一个数字可能会有多少位数?
  6. 您的代码一切顺利!

答案 1 :(得分:0)

您可以尝试这样的正则表达式:

public static void main(String[] args) {
    // ab10sdj, ba1wqa, cd03asce, dfasc
    String s1 = "ab10sdj";
    String s2 = "ba1wqa";
    String s3 = "cd03asce";
    String s4 = "dfasc";
    String pattern = "^(ab|ba)(\\d+).*";
    System.out.println(s1.replaceAll(pattern, "$2")); // output 10
    System.out.println(s2.replaceAll(pattern, "$2")); // output 1
    System.out.println(s3.replaceAll(pattern, "$2")); // output cd03asce i.e, no change
    System.out.println(s4.replaceAll(pattern, "$2")); // output dfasc i.e, no change
}
相关问题