简单正则表达式匹配

时间:2013-09-27 08:22:30

标签: regex

我是正则表达式的新手,我试图在gwt客户端使用RegExp。我想做一个简单的*匹配。 (如果用户输入006 *,我想匹配006 ......)。我写这个有困难。我所拥有的是:

input = (006*)
input = input.replaceAll("\\*", "(" + "\\" + "\\" + "S\\*" + ")"); 
RegExp regExp = RegExp.compile(input).

它也会像BKLFD006 *一样返回true。我做错了什么?

2 个答案:

答案 0 :(得分:2)

在您正在生成的正则表达式的开头放置一个^

^字符表示仅在源字符串的开头匹配。

答案 1 :(得分:1)

我认为你在这里混合了两件事,即替换和匹配。

当您想要提取与特定模式匹配的输入字符串的一部分时,将使用匹配。在你的情况下,它似乎是你想要的,并且为了得到一个或多个数字,后面跟一个星形,而不是任何东西,那么你可以使用以下正则表达式:

^[0-9]+(?=\*)

这是一个Java代码段:

String subjectString = "006*";
String ResultString = null;
Pattern regex = Pattern.compile("^[0-9]+(?=\\*)");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group();
}

另一方面,当您想要用输入字符串替换其他内容时,使用替换。

例如,如果您想要替换所有数字后面跟一个括号括起来的相同数字的星号,那么您可以这样做:

String input = "006*";
String result = input.replaceAll("^([0-9]+)\\*", "($1)");

请注意使用$1来引用在正则表达式模式中使用捕获组([0-9]+)捕获的数字。