我想用重复的规则写一个正则表达式。
String resList = "WW200020+ww200020";
if(resList!=null && (resList.matches("^([a-zA-Z]{2}[0-9%_]*)"))){
resList =resList.substring(2);
}
+
是可选的分隔符。例如,它也可以像WW200020
。我需要在+
符号后重复该规则。如何为重复规则编写正则表达式?
请帮帮忙。
答案 0 :(得分:1)
您可以使用1 replaceAll
和更新的正则表达式获取预期输出(请注意方括号中的[+]
,这样我们就不必转义它,?
量词制作它是可选的,还请注意搜索整个子模式的最终+
量词1次或更多次):
String resList = "WW200020+ww200020";
if(resList!=null && resList.matches("^([+]?[a-zA-Z]{2}[0-9%_]*)+")) {
resList = resList.replaceAll("(?i)(?<=^|[+])[a-z]{2}([0-9%_]*)", "$1");
System.out.println(resList);
}
请参阅IDEONE demo
正则表达式 - (?i)(?<=^|[+])[a-z]{2}([0-9%_]*)
- 符合以下条件:
(?i)
- 执行不区分大小写的匹配([a-z]
也会匹配[A-Z]
)(?<=^|[+])
- 在我们之前确保有字符串开头(^
)或加号的后视...... [a-z]{2}
- 2个英文字母([0-9%_]*)
- 我们在替换模式中引用为{{1}的0个或更多数字(0-9
)或%
或_
被捕获到第1组中}。