我有这个字符串:"2x+10=100"
。
现在我想知道100之前的字符是什么字符。
我如何用正则表达式得到这个?
谢谢。
答案 0 :(得分:2)
能否请您尝试以下。它将在100之前给出1个字符。
.(?=100)
或者如果您需要匹配最后100个字符之前的字符(考虑到如果出现多次100个并且您需要最后100个字符的值),请尝试以下操作。
.(?=100$)
简要说明:在此处使用正向向前/向前方法,并确定其中是否有100个字符(?=100)
,然后在其前面提到.
个DOT,以使第一个字符位于100个字符之前。
答案 1 :(得分:2)
其他回答者是正确的,(.)100
是这场比赛所必需的正则表达式,但是我发现有时使用正则表达式的细节可能会使新用户感到困惑。由于您的问题是用Java标记的,因此以下是一个基于this code sample的Java代码示例,显示了正则表达式正在使用。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches {
public static void main( String args[] ) {
// String to be scanned to find the pattern.
String line = "2x+10=100";
String pattern = "(.)100";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(1) );
} else {
System.out.println("NO MATCH");
}
}
}
您还可以从Regex101之类的网站中受益,以帮助您使用正则表达式并学习如何构建自己的模式。
答案 2 :(得分:0)
此正则表达式查找“ 100”之前的任何单个字符并将其捕获在第一组(.)100
中。括号表示捕获组。点表示任何单个字符。
答案 3 :(得分:0)
您可以使用捕获组来获取匹配字符串的一部分。例如,这段代码:
Matcher matcher = Pattern.compile("([a-z]+)[0-9]+").matcher("abc456");
assert matcher.matches();
System.out.println(matcher.group(1));
打印出:
abc
另请参阅:Java Pattern class docs。