我想编写一个正则表达式,捕获所有以_0, _1,
结尾的名称,如:
dog, cart_5, rat_0
我尝试了/_\d$/.test('abc_0')
,但是对于“狗”而言,它会返回false。我想了解如何确保小组(_digit)
整体重复0次或更多次?
另外,我可以在下划线后面找到数字吗?我想通过java
做最后一件事答案 0 :(得分:2)
我想了解如何确保整个组(_digit)重复0次或更多次?
对于零个或多个_
任何数字。
(?:_\d)*$
OR
对于零个或多个_
任何数字。
(?:_\d+)*$
OR
零或更多_
加0或1。
(?:_[01])*$
示例:
> /(?:_\d)*$/.test('abc_0')
true
> /(?:_\d)*$/.test('dog')
true
答案 1 :(得分:2)
如果要查找以数字结尾的所有单词,可以使用\w+_\d+
。如果您只想将匹配限制为0或1,请尝试\w+_0|1
。
以下是java中的示例代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Solution {
public static void main(String[] args) {
//Pattern p = Pattern.compile("\\w+_\\d+"); //uncomment the code for first case
Pattern p = Pattern.compile("\\w+_0|1");
Matcher matcher = p.matcher("dog, cart_5a, rat_0b");
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
输出
rat_0