我有这个字符串:"2x+10=100"
。现在我想知道100之前的字符是什么字符。我怎样才能得到这与正则表达式?
提前致谢。
可否请您尝试以下操作。它只是将100之前给1个字符。
.(?=100)
或者如果你需要匹配前的最后一次100,它自带字符(考虑到如果万一有多个100个事件,你需要最后一个100的值),然后尝试以下。
.(?=100$)
简要说明:使用正期待/超前方法在这里,并确保当100在它的到来(?=100)
然后提.
一个DOT前100之前获得第一个字符。
其它应答者是正确的,(.)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帮你玩的正则表达式,并学习如何构建自己的模式。
这正则表达式查找任何单个字符之前的“100”,并捕捉它在第一组:(.)100
。括号是指捕获基团。该点表示任何单个字符。
您可以使用捕获组得到匹配的字符串的一部分。例如,这样的代码:
Matcher matcher = Pattern.compile("([a-z]+)[0-9]+").matcher("abc456");
assert matcher.matches();
System.out.println(matcher.group(1));
打印出来:
abc