package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test1 {
public static void main(String[] args) {
String hql = " from Users abc by type order by id abc limit 0,3";
removeOrders(hql);
}
/**
* 使用Matcher.appendReplacement(String str1, String str2)时要注意,最好这样用:
Matcher.appendReplacement(String str1, String str2.replaceAll("\\\\", "\\\\\\\\").replaceAll("\\$", "\\\\\\$"));
1replaceAll("\\\\", "\\\\\\\\")是为了把"\"符号加上,如果不进行这部处理,"\"符号就会被删除!
2replaceAll("\\$", "\\\\\\$")是为了把"$"符号转义,因为"$"后加数字是表示第几组的意思!
* @param hql
* @return
*/
private static String removeOrders(String hql){
// Assert.hasText(hql);
Pattern p=Pattern.compile("abc",Pattern.CASE_INSENSITIVE);
Matcher m=p.matcher(hql);
StringBuffer sb=new StringBuffer();
//find()方法表示是否有符合的字符串,group()方法则可以将符合的字符串返回
while(m.find()){
System.out.println(m.group());
//将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里。
//appendReplacement方法先添加字符串中从当前位置到下一个 匹配位置之间的所有字符,然后添加替换值。
m.appendReplacement(sb,"ttitfly");
System.out.println(sb.toString());
}
//将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。
//appendTail添加的 是字符串中从最后一次匹配的位置之后开始,直到结尾的部分
m.appendTail(sb);
System.out.println(sb.toString());
return sb.toString();
}
}
输出结果:
abc
from Users ttitfly
abc
from Users ttitfly by type order by id ttitfly
from Users ttitfly by type order by id ttitfly limit 0,3
分享到:
相关推荐
在提供的压缩包文件"Draw Pattern Matches Position .vi"中,很可能是包含了一个完整的Labview虚拟仪器(VI),这个VI实现了从输入数据中寻找特定模式,并将匹配结果以图形化的形式显示出来。用户可以通过运行此VI,...
org.dom4j.rule A Pattern based XML rule engine which implements the full XSLT processing model while allowing any Action to be fired if a pattern matches. org.dom4j.rule.pattern org.dom4j.swing A ...
- `matches()`: 检查整个输入字符串是否匹配给定的模式。 - `find()`: 查找输入字符串中的第一个匹配项,不一定是整个字符串。 - `group()`: 返回匹配的子字符串,`group(0)`返回整个匹配,`group(1)`返回第一个括号...
- **3.19 Dispatching Based on Pattern Matches** - **知识点:** 展示如何基于模式匹配进行调度处理。 - **3.20 Evaluating Code Inside Strings** - **知识点:** 介绍如何评估字符串内的代码,需要注意安全性...
### Python Cookbook知识点解析 #### 一、Python Shortcuts(Python快捷技巧) **1.1 Swapping Values Without Using a Temporary Variable(无需临时变量交换值)** 在Python中,可以通过简单的语法来实现两个...
2. `matches()`: 检查整个输入序列是否匹配此模式。 3. `group(int group)`:返回匹配正则表达式中指定组的字符串。组0总是代表整个匹配的字符串。 4. `start()` 和 `end()`: 分别返回匹配子序列的起始和结束索引。 ...
boolean matchResult = Pattern.matches("\\d+", "12345"); ``` 5. **方法 pattern()** - 功能:返回创建 `Pattern` 对象时使用的原始正则表达式字符串。 - 示例代码: ```java String originalPattern = ...
Pattern p = Pattern.compile("\\d+"); Matcher m = p.matcher(input); while (m.find()) { System.out.println(m.group()); } ``` 这将输出所有找到的数字:123, 45, 978, 1, 2345, 6789, 0。 总结: JAVA的正则...
MatchResult _ -> patternMatches pat val ``` `checkMatch`函数使用类型族`MatchResult`来推断匹配检查的结果类型,并在运行时执行实际的匹配检查。 总之,“first-class-patterns”项目探讨了如何在Haskell中...
在Java中,正则表达式的处理主要涉及到两个核心类:`Pattern`和`Matcher`。 `Pattern`类是用于编译正则表达式的,它将文本模式转化为可匹配的模式对象。在给定的例子中,`Pattern.compile("[,\\s]+")`编译了一个...
`Pattern.matches`是一个静态方法,用于快速匹配整个输入字符串是否符合给定的模式。它要求输入字符串完全符合正则表达式,否则返回`false`。例如,`Pattern.matches("\\d+","2223")`会返回`true`,因为整个字符串`...
### Java正则表达式Pattern与Matcher详解 #### 一、Java正则表达式的概述 在Java编程语言中,正则表达式(Regular Expression)是一种强大的文本处理工具,它能够帮助开发者进行复杂的字符串搜索和替换操作。Java...
主要介绍了Java matches类,Pattern类及matcher类用法,结合实例形式分析了java matches类,Pattern类及matcher类针对字符串常见操作技巧与相关注意事项,需要的朋友可以参考下
Java正则表达式(Regex或Pattern)是Java编程语言中处理文本的强大工具,它允许我们进行复杂的字符串匹配、查找、替换等操作。在Java中,`java.util.regex`包提供了Pattern和Matcher类来支持正则表达式的使用。下面...
Pattern pattern = Pattern.compile(regex); String[] splitStrs = pattern.split("???*?"); ``` #### 总结 Java中的正则表达式是通过`java.util.regex`包提供的`Pattern`、`Matcher`等类实现的。这些类提供了一种...
这个`Matcher`实例可以执行多种操作,如`matches()`(检查整个输入是否匹配正则表达式),`find()`(查找第一个匹配的部分),`group()`(获取匹配的子字符串)等。 在提供的示例中,`Pattern.split()`方法被用来...
Pattern pattern = Pattern.compile(regex); ``` 2. **Matcher类**:`Matcher`是`Pattern`的实例,它负责实际的字符串匹配工作。你可以使用`Matcher`的`matches()`、`find()`等方法检查字符串是否符合正则表达式。...