我正在尝试确定字符串是否包含特定属性。
我有一个长字符串,想确定属性v_lstg_#是否包含在该字符串中,但我遇到的问题是v_lstg_#中的最后一个字符是0-9之间的任意整数,(因此'#'),所以我的问题是我可以用什么正则表达式(或任何其他方法)来确定该属性是否包含在字符串中?
类似于:
String randomString;
randomString.contains("v_lstg_" + "some integer valued, ranged from 0 - 9, regex here")
答案 0 :(得分:0)
您不想使用contains()
。它本质上是一个正则表达式,因此请使用matches()
:
boolean matches = randomString.matches(".*v_lstg_\\d.*");
ETA :请求将v_lstg_
部分与其余部分分开:
String prefix = "v_lstg_";
boolean found = randomString.matches(".*"+prefix+"\\d.*");
答案 1 :(得分:0)
这是另一个例子......使用正则表达式模式和匹配器类。如果你只想要这个数字那么你可以研究正则表达式分组来解决这个问题。正则表达式会变得疯狂,所以要小心。
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