我如何在使用正则表达式的特定字符之前得到该字符?

时间:2019-02-04 18:31:52

标签: java regex string

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

谢谢。

4 个答案:

答案 0 :(得分:2)

能否请您尝试以下。它将在100之前给出1个字符。

.(?=100)

Regex Demo:

或者如果您需要匹配最后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