将java代码转换为一个正则表达式

时间:2015-03-18 22:25:53

标签: java regex string

我需要帮助将等于代码转换为匹配(正则表达式)。非常感谢。

    //string composed of prefix and suffix - Can be spaced
    //PREFIX - alfa-numeric, variable length, upper/lower case
    //SUFFIX - numeric, variable length, can be spaced
    String str="xpto 123 456 789";

    String prefix_to_search="XPTO";
    String digits_to_search="123456789";

    //remove prefix (case insensitive)
    str.substring(str.toUpperCase().startsWith(prefix_to_search) ? prefix_to_search.length() : 0).
    //remove spaces
    replace(" ","").
    equals(digits_to_search));

给出一个字符串“xpto 123 456 789”

MATCH
“123456789”
“123 456 789”
“1 2 3 4 5 6 7 8 9”
“XPTO 123 456 789”
“XPTO 1 2 3 4 5 6 7 8 9”

不匹配
“12345678”
“1234567890”
“XPTO 12345678”
“XPTO 1234567890”
“XP 123 456 789”
“123 456 789 XPTO”

换句话说:
- 前缀必须是IGNORED(case INSENSITVE!)
- 数字必须匹配(空格必须是忽略!)

2 个答案:

答案 0 :(得分:1)

(?i)(?:xpto)?\\s*1\\s*2\\s*3\\s*4\\s*5\\s*6\\s*7\\s*8\\s*9

如果您希望始终与前缀匹配,请在前缀组之后删除?(从您的更新中看来,前缀不是强制性的)

答案 1 :(得分:-1)

这应该这样做(假设它特定于这个问题)

(?i)\bxpto[0-9\W]+

您可以在www.regexplanet.com上查看