查找子字符串

时间:2017-07-10 08:28:59

标签: java regex string

我有像

这样的字符串
Strig foo = "PrinciplexbxbxbxbxbxbTeachershshshshshhsClassdhdhdhhdhdhdList[something to be extracted]jdjdjdj"

我希望输出为"要提取的内容"字符串的正则表达式是Principle*Teacher*Class*List[*]*.

在此之后创建一个新字符串

 Strig foo = "PrinciplexbxbxbxbxbxbTeachershshshshshhsClassdhdhdhhdhdhdList[something new]jdjdjdj"

2 个答案:

答案 0 :(得分:1)

如果您的String格式始终相同并且包含PrincipleTeachersClass后跟[some text]字样,那么 the Regex 您需要:

Principle\\w*Teachers\\w*Class\\w*\\[([\\s\\w]+)\\]\\w*

\\[([\\s\\w]+)\\]中的匹配组将匹配您需要的字符串。

您的代码将是这样的:

final String regex = "Principle\\w*Teachers\\w*Class\\w*\\[([\\s\\w]+)\\]\\w*";
final String string = "Strig foo = \"PrinciplexbxbxbxbxbxbTeachershshshshshhsClassdhdhdhhdhdhdList[something to be extracted]jdjdjdj\"\n";

string.replaceAll(regex, "something new");

答案 1 :(得分:1)

如果你想获得something to be extracted,那么你可以提取两个括号\[(.*?)\]之间的所有内容,你可以使用这样的模式:

String foo = ...;
String regex = "\\[(.*)\\]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(foo);

if (matcher.find()) {                                                
    System.out.println(matcher.group(1));
}

如果要替换它,可以将replaceAll与相同的正则表达式一起使用:

foo = foo.replaceAll("\\[.*?\\]", "[something new]");

regex demo