确定子字符串是否包含随机数



我正在尝试确定字符串是否包含特定属性。

我有一个长字符串,想确定属性v_lstg_#是否包含在该字符串中,但我遇到的问题是v_lstg_#中的最后一个字符是从0-9开始的任意整数(因此是"#"),所以我的问题是我可以使用什么regex(或任何其他方法)来确定该属性是否包含在字符串中?

所以类似于:

String randomString;
randomString.contains("v_lstg_" + "some integer valued, ranged from 0 - 9, regex here")

您不希望使用contains()。从本质上讲,这是一个正则表达式,所以使用matches():

boolean matches = randomString.matches(".*v_lstg_\d.*");

ETA:请求将v_lstg_部分与其他部分分离:

String prefix = "v_lstg_";
boolean found = randomString.matches(".*"+prefix+"\d.*");

这里是另一个例子。。。使用regex Pattern和Matcher类。如果你只想要这个数字,那么你可以研究正则表达式分组来提取它。Regexes可能会变得疯狂,所以要小心。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Debug {
  public static void main(String[] args) {
    String s = "v_lstg_124536someotherstuff";
    String regex = "(v_lstg_\d+)";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(s);
    System.out.println(m.find());
    System.out.println(s.subSequence(m.start(), m.end()));
  }
}

这里有一个分组的例子

 public static void main(String[] args) {
    String s = "v_lstg_124536someotherstuff";
    String regex = "(v_lstg_)(\d+)";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(s);
    System.out.println(m.find());
    System.out.println(s.subSequence(m.start(), m.end()));
    System.out.println(m.group(1));
    System.out.println(m.group(2));
  }

它打印

true
v_lstg_124536
v_lstg_
124536

最新更新