public static void main(String[] args) {
Map<String,String> tokens = new HashMap<String,String>();
tokens.put("cat", "Garfield");
tokens.put("beverage", "coffee");
//匹配类似velocity规则的字符串
String template = "$cat really needs some $beverage.";
//生成匹配模式的正则表达式
//String patternString = "\\$\\{(" + StringUtils.join(tokens.keySet(), "|") + ")\\}";
String patternString = "\\$(" + StringUtils.join(tokens.keySet(), "|") + ")";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(template);
//两个方法:appendReplacement, appendTail
StringBuffer sb = new StringBuffer();
while(matcher.find()) {
matcher.appendReplacement(sb, tokens.get(matcher.group(1)));
}
matcher.appendTail(sb);
//out: Garfield really needs some coffee.
System.out.println(sb.toString());
//对于特殊含义字符"\","$",使用Matcher.quoteReplacement消除特殊意义
matcher.reset();
//out: cat really needs some beverage.
System.out.println(matcher.replaceAll("$1"));
//out: $1 really needs some $1.
System.out.println(matcher.replaceAll(Matcher.quoteReplacement("$1")));
//到得邮箱的前缀名。插一句,其实验证邮箱的正则多种多样,根据自己的需求写对应的正则才是王道
String emailPattern = "^([a-z0-9_\\.\\-\\+]+)@([\\da-z\\.\\-]+)\\.([a-z\\.]{2,6})$";
pattern = Pattern.compile(emailPattern);
matcher = pattern.matcher("test@qq.com");
//验证是否邮箱
System.out.println(matcher.find());
//得到@符号前的邮箱名 out: test
System.out.println(matcher.replaceAll("$1"));
//获得匹配值
String temp = "<meta-data android:name=\"appid\" android:value=\"joy\"></meta-data>";
pattern = Pattern.compile("android:(name|value)=\"(.+?)\"");
matcher = pattern.matcher(temp);
while(matcher.find()) {
//out: appid, joy
System.out.println(matcher.group(2));
}
}
分享到:
相关推荐
`replaceAll()`会将所有匹配正则表达式的子串替换为指定的新模板。 ```java String input = "原始文本中的旧的模板需要替换"; String replacement = "新的模板"; Matcher matcher = pattern.matcher(input); ...
4. **宏**:Velocity支持宏定义,宏类似于函数,可以在模板中重复使用,提高代码复用性。 5. **事件驱动的处理机制**:Velocity 提供了一套事件驱动的处理机制,允许用户自定义处理器对模板进行预处理或后处理,如...
这整个过程是完全独立于具体的服务器环境的,使得Velocity成为一种跨平台的解决方案。 总的来说,Velocity和Velocity Tools是Java Web开发中的重要组件,它们帮助开发者构建高效、可维护的Web应用,同时保持前后端...
Velocity 是一款基于 Java 的模板引擎,它被广泛应用于 Web 开发中,特别是作为 Apache Struts 和 Spring MVC 框架的一部分。Velocity 插件则是为了在开发环境中提供对 Velocity 模板语言的支持,使得开发者可以在 ...
这两个指令属于Velocity Tools的扩展,如果你的项目中引入了Velocity Tools,可以通过在`velocity.properties`文件中添加以下配置来启用它们: ```properties userdirective = org.apache.velocity.tools.generic....
Velocity 也提供了类似的功能,但是 Freemarker 的实现更加完善。 其次,从插件支持上来讲,Freemarker 的 Eclipse 插件要比 Velocity 的 Eclipse 插件好,其支持 Freemarker 语法和 HTML 语句,而 Velocity 的...
4. **宏**:Velocity 支持宏定义,类似于 HTML 中的自定义标签,可以复用和封装代码,增强模板的模块化。 5. **指令集**:Velocity 提供了多种内置指令,如 #if, #foreach, #set 等,用于控制流程和处理数据。 ** ...
- **Velocity**也有类似的宏定义`#macro(name param1 param2) ... #end`,但功能相对有限。 5. **转义**: - **FreeMarker**内置了多种转义功能,比如HTML转义、XML转义等,可以通过简单的指令实现。 - **...
`eclipse相关插件`,虽然不是必需的jar包,但对于使用Eclipse作为IDE的开发者来说,可能需要安装Velocity支持的Eclipse插件,如Velocity视图插件,它能提供模板语法高亮和代码完成等功能,提高开发效率。 为了正确...
3. **宏**:自定义的可重用代码块,类似于函数,可以接受参数。 4. **注释**:`#comment` 和 `##` 用于在模板中添加注释。 **Velocity的使用** 1. **初始化Velocity上下文**:在Java代码中,你需要创建一个`...
Velocity是一个开源的Java模板引擎,它允许开发者将HTML与Java代码分离,使Web开发者能够更专注于页面设计,而程序员则可以处理业务逻辑。这个压缩包包含了Velocity运行所需的四个核心JAR文件,它们分别是: 1. **...
本部分将展示如何在Servlet环境中集成Velocity,并通过实例介绍如何将Velocity应用于Web开发。 1. 搭建Java Web工程,这里直接使用Maven的maven-archetype-webapp生成项目骨架。 2. 添加Tomcat运行环境,通过Maven...
1. **单行注释**:以`##`开头,类似于C++中的`//`。 ```velocity ## 这是一行注释呀这是一行注释 ``` 2. **多行注释**:使用`#*`和`*#`标记来定义注释区域,适用于多行注释。 ```velocity #* 这是很多行注释...
2. **分离关注点**:Velocity将表现层(视图)与业务逻辑(控制器)分离,使得设计师可以专注于页面布局,而开发者可以专注于后端处理。 3. **安全**:由于VTL不支持完整的Java语法,这降低了注入攻击的风险,提高了...
Eclipse编辑Velocity插件VelocitySite-2.0.8是一款专为Java开发人员设计的工具,旨在提升在Eclipse集成开发环境中编辑Velocity模板语言(VTL)的效率和体验。Velocity是一个快速、轻量级的Java模板引擎,常用于Web...
Velocity被广泛应用于Web应用、邮件生成、报告生成等多种场景。要使用Velocity,你需要确保拥有正确的jar包支持。以下是关于Velocity及其所需jar包的详细知识: 1. **Velocity核心库**:`velocity.jar` 是 Velocity...
宏定义类似于函数,可以在模板中多次调用,提高代码复用性。例如: ```html #macro (displayPerson $person) <p>Name: $person.name, Age: $person.age #end #displayPerson($john) #displayPerson($mary) ``` #...
- **特点**:Velocity是由Apache软件基金会开发的开源项目,它的设计目标是简洁和易用,避免暴露Java语法,使得模板更加专注于呈现逻辑。Velocity使用`#`作为指令开始符,`$`用来引用对象。 - **优势**:Velocity...
1. **代码提示和自动完成**:在编写Velocity模板时,插件会提供模板指令、变量和方法的自动补全,有助于减少错误并提高开发速度。 2. **语法高亮和错误检查**:插件能够对Velocity模板进行语法高亮显示,同时实时...
Velocity 提供了一种类似于编程的语言,称为Velocity Template Language (VTL),它允许在模板中嵌入控制结构(如条件语句和循环)以及引用Java对象的属性。这种语言的语法简洁,易于学习,同时避免了像JSP那样在模板...