我有像
这样的字符串Strig foo = "PrinciplexbxbxbxbxbxbTeachershshshshshhsClassdhdhdhhdhdhdList[something to be extracted]jdjdjdj"
我希望输出为"要提取的内容"字符串的正则表达式是Principle*Teacher*Class*List[*]*.
在此之后创建一个新字符串
Strig foo = "PrinciplexbxbxbxbxbxbTeachershshshshshhsClassdhdhdhhdhdhdList[something new]jdjdjdj"
答案 0 :(得分:1)
如果您的String
格式始终相同并且包含Principle
,Teachers
和Class
后跟[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]");