我如何用正则表达式的特定字符前的字符?

问题描述 投票:-1回答:4

我有这个字符串:"2x+10=100"。现在我想知道100之前的字符是什么字符。我怎样才能得到这与正则表达式?

提前致谢。

java regex string
4个回答
2
投票

可否请您尝试以下操作。它只是将100之前给1个字符。

.(?=100)

Regex Demo:

或者如果你需要匹配前的最后一次100,它自带字符(考虑到如果万一有多个100个事件,你需要最后一个100的值),然后尝试以下。

.(?=100$)

简要说明:使用正期待/超前方法在这里,并确保当100在它的到来(?=100)然后提.一个DOT前100之前获得第一个字符。


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帮你玩的正则表达式,并学习如何构建自己的模式。


0
投票

这正则表达式查找任何单个字符之前的“100”,并捕捉它在第一组:(.)100。括号是指捕获基团。该点表示任何单个字符。


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


推荐问答