我是正则表达式的新手,我试图在gwt客户端使用RegExp。我想做一个简单的*匹配。 (如果用户输入006 *,我想匹配006 ......)。我写这个有困难。我所拥有的是:
input = (006*)
input = input.replaceAll("\\*", "(" + "\\" + "\\" + "S\\*" + ")");
RegExp regExp = RegExp.compile(input).
它也会像BKLFD006 *一样返回true。我做错了什么?
答案 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]+)
捕获的数字。