例如,我有一组字符串:
"Abc zcf",
"Abcd zcf",
"Zcf Abc",
"Zcf Abcd",
"Test ez",
"Rabc Jabc"
如何在这个集合字符串中找到任何单词以“abc”字符开头? 在我的例子中,它将是字符串
"Abc zcf",
"Zcf Abc",
"Abcd zcf",
"Zcf Abcd"
答案 0 :(得分:6)
您必须使用Pattern
:
final Pattern p = Pattern.compile("\\bAbc");
// ...
if (p.matcher(input).find())
// match
仅供参考,\b
是锚点。 Java对单词字符的定义是下划线,数字或字母。
答案 1 :(得分:3)
您需要匹配任何内容,后跟单词边界,然后是abc
。您还希望以不区分大小写的方式执行此操作。模式
(?i).*\\babc.*
会工作吗?一个简单的例子
public static void main(String[] args) throws Exception {
final Pattern pattern = Pattern.compile("(?i).*\\babc.*");
final String[] in = {
"Abc zcf",
"Abcd zcf",
"Zcf Abc",
"Zcf Abcd",
"Test ez",
"Rabc Jabc"};
for (final String s : in) {
final Matcher m = pattern.matcher(s);
if (m.matches()) {
System.out.println(s);
}
}
}
输出:
Abc zcf
Abcd zcf
Zcf Abc
Zcf Abcd
修改强>
此外,@ fge关于匹配整个模式的评论是在String
中搜索模式的一种更简洁的方法。
public static void main(String[] args) throws Exception {
final Pattern pattern = Pattern.compile("(?i)(?<=\\b)abc");
final String[] in = {
"Abc zcf",
"Abcd zcf",
"Zcf Abc",
"Zcf Abcd",
"Test ez",
"Rabc Jabc"};
for (final String s : in) {
final Matcher m = pattern.matcher(s);
if (m.find()) {
System.out.println(s);
}
}
}
这说明发现abc
前面有 \b
- 即字边界。输出是一样的。
答案 2 :(得分:1)
您可以使用:
if( maChaine.startWith("Abc") )
{
list.add( maChaine ) ;
}
答案 3 :(得分:0)
试试这个正则表达式来解决你的问题:
(^Abc| Abc)