我需要帮助将等于代码转换为匹配(正则表达式)。非常感谢。
//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!)
- 数字必须匹配(空格必须是忽略!)
答案 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上查看