正则表达式的一些常用场景

(1)过滤表情符号

Java代码  

  1. /***
  2. * 过滤表情符号<br>
  3. * see:http://blog.csdn.net/beatrice_g20/article/details/48489437
  4. *
  5. */
  6. public static String filterExpression(String str) {
  7. if (ValueWidget.isNullOrEmpty(str)) {
  8. return str;
  9. }
  10. String pattern = "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]";
  11. Pattern emoji = Pattern.compile(pattern);
  12. Matcher emojiMatcher = emoji.matcher(str);
  13. str = emojiMatcher.replaceAll(SystemHWUtil.EMPTY);
  14. return str;
  15. }

应用:下载

Java代码  

  1. String anser = convention.getAnswer();
  2. if (!ValueWidget.isNullOrEmpty(anser)) {
  3. anser = RegexUtil.filterExpression(anser);
  4. convention.setAnswer(anser);
  5. }

(2)删除重复的行(必须是相连的)

Java代码  

  1. /***
  2. * 删除重复的行(必须是相连的)
  3. */
  4. public static String deleteDuplicateRow(String input) {
  5. if (ValueWidget.isNullOrEmpty(input)) {
  6. return input;
  7. }
  8. String[] rows = input.split(SystemHWUtil.CRLF);
  9. List<String> stringlist = new ArrayList<>();
  10. for (int i = 0; i < rows.length; i++) {
  11. stringlist.add(rows[i]);
  12. }
  13. // 搜索结果是经过排序的,根据此规律删除不合要求File
  14. for (int i = 0; i < stringlist.size() - 1; i++) {
  15. if (stringlist.get(i).equals(stringlist.get(i + 1))) {
  16. stringlist.remove(i);
  17. if (i != 0) i--;
  18. }
  19. }
  20. return SystemHWUtil.formatArr(stringlist, SystemHWUtil.CRLF);
  21. }

应用:下载

Java代码  

  1. System.out.println("input:"+input);
  2. String unicodeStr = input.replace("\"3e[\r][\n]\"", "").replaceAll("\\[[\\s]*0[xX][\\s]*([\\w]{2})\\]", "%$1")
  3. .replaceAll("\\[0[xX]([\\w]{1})\\]", "%0$1");
  4. //                          ComponentUtil.appendResult(resultTextArea, unicodeStr, true,false);
  5. unicodeStr=RegexUtil.dealCiaResponseRequest(unicodeStr, true);
  6. //                          unicodeStr=RegexUtil.dealCiaResponse(unicodeStr,Constant2.REGEX_DELETE_FRONT_OF_CIA, true);
  7. //删除重复的行(必须是相连的)
  8. unicodeStr = RegexUtil.deleteDuplicateRow(unicodeStr);

(3)驼峰标识

Java代码  

  1. /***
  2. * 驼峰标识<br>
  3. *
  4. */
  5. public static String humpMarking(String input){
  6. Pattern p=Pattern.compile("_[a-z]");
  7. Matcher m=p.matcher(input);
  8. StringBuffer sb = new StringBuffer();
  9. boolean result=m.find();
  10. while(result){
  11. String findResult=m.group().toUpperCase().replaceAll("^_", SystemHWUtil.EMPTY);
  12. m.appendReplacement(sb, findResult);
  13. result=m.find();
  14. }
  15. m.appendTail(sb);
  16. return sb.toString().replaceAll("_$", SystemHWUtil.EMPTY);
  17. }

(4)把换行的段落当做字符串拼接

Java代码 下载 

  1. /***
  2. * 把换行的段落当做字符串拼接
  3. */
  4. public static String splitPlus(String input, String cr, String quote, boolean keepBlank) {
  5. input=input.replaceAll(cr+"+$","");
  6. String chinese;
  7. //      String quote="\"";
  8. String replacement = quote + " + SystemHWUtil.CRLF +$1" + quote + "$2";
  9. String regex = null;
  10. String regexMutip = null;//是否匹配多个换行
  11. if (keepBlank) {//保持空格 <br />[^\n\r]表示不是换行
  12. regex = "([^\n\r]*)";
  13. regexMutip = "";
  14. } else {
  15. regex = "[\\s]*([^\\s]+.*)";
  16. regexMutip = "+";
  17. }
  18. input=input.replace(quote, "\\"+quote);//原字符串转义
  19. //简单点说,就是把[换行]替换为[‘(单引号)+(加号)‘(单引号)]
  20. //所以最前面和最后面需要各补一个单引号
  21. if(cr.equals("\\r\\n")){
  22. chinese = input.replaceAll("(\r\n)" + regexMutip + regex, replacement);
  23. }else if(cr.equals("\\n")){
  24. chinese = input.replaceAll("(\n)" + regexMutip + regex, replacement);
  25. }else if(cr.equals("\\r")){
  26. chinese = input.replaceAll("(\r)" + regexMutip + regex, replacement);
  27. }else{
  28. chinese = input.replaceAll("(\n\r)" + regexMutip + regex, replacement);
  29. }
  30. return quote + chinese + quote + " ;";
  31. }

应用:

Java代码  

  1. public static String splitPlus(String input, String cr, String quote) {
  2. return splitPlus(input, cr, quote, false);
  3. }
  4. @Override
  5. public String callbackAdditional(String input, Object crfl) {
  6. return RegexUtil.splitPlus(input, (String) crfl, "\"", true);
  7. }

(5)是否包含指定字符串,不区分大小写

Java代码下载  

  1. /***
  2. * 是否包含指定字符串,不区分大小写
  3. */
  4. public static boolean contain2(String input, String regex) {
  5. /***
  6. * input:(1)bss登录(2) <br>
  7. regex:bss登录(2)
  8. */
  9. regex = regex.replace("(", "\\(");
  10. regex = regex.replace(")", "\\)");
  11. if (ValueWidget.isNullOrEmpty(input)) {
  12. return false;
  13. }
  14. Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
  15. Matcher m = p.matcher(input);
  16. boolean result = m.find();
  17. return result;
  18. }
时间: 2024-08-05 19:37:34

正则表达式的一些常用场景的相关文章

git常用命令常用场景

在使用git之前,一直用的是svn版本管理:与svn最大不同的是,git有两个仓库,一个是本地仓库,一个是服务器上共享的仓库:本地仓库是每个开发者自己独有的,即使commit提交也只是提交到本地仓库:这只是git流行起来的一个优势之一,另外linux作者开发的这套版本管理工具,很接地气,也是流行起来的一大亮点.扯了这么多没用的,言归正卷,那么在日常开发工作中,哪些git命令是我们常用到的呢?下面就说说几个常用命令的常用场景,至于这些命令详细使用就不在本文讨论之内. 1.git命令别名 使用过gi

[Linux运维]常用场景模拟 -- cpu使用率模拟

[Linux运维]常用场景模拟 -- cpu使用率模拟 from http://www.cnblogs.com/zk47/p/4771105.html 1 单个核 100%: 代码 kill_cpu.c #include <stdlib.h> int main() { while(1); return 0; } 运行 $ gcc -o out kill_cpu.c $ ./out 看top的结果: $ top top - 15:44:08 up 207 days, 21:29, 2 users

cocos2dx 游戏开发中常用场景切换方式以及特性

runWithScene(CCScene* scene):启动游戏,并运行scene 场景.这个方法在主程序启动时第一次启动主场景时调用. replaceScene(CCScene* scene):直接使用传入的scene 替换当前场景来切换画面,当前场景将被释放.这是切换场景时 最常用的方法. pushScene(CCScene* scene):在不释放旧场景内存的情况下运行新场景,推进新场景相当于在当前可见的纸上再放一张纸,而之前的纸位置何持不变.适用情况: 1.推进一个经常被用到的场景,例

Delphi 正则表达式语法(4): 常用转义字符与 .

Delphi 正则表达式语法(4): 常用转义字符与 . // \d 匹配所有数字, 相当于 [0-9] var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := '期待Delphi 2008 for Win32!';   reg.RegEx  := '\d';   reg.Replacement := '◆';   reg.ReplaceAll;   ShowMessage(reg.Subjec

Git&mdash;&mdash;常用场景解析

总结:本篇文章从初识GitHub.Git,实践GitHub的五种常用场景,分别是:git for windows安装,git配置,克隆远程代码到本地,上传本地代码到远程以及Git的常用指令.相信James已经尝到了Git的滋味. Git是什么?是版本控制工具,是协同开发的利器. "版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统:对于软件开发领域来说,版本控制是最重要的一环." 如何使用呢?首次接触Git时,James认为:大可不必去弄清楚Git的工作原理,

LogMiner常用场景

1 LogMiner常用场景 1.1 用LogMiner跟踪特定用户所做的更改 本节例子,查出用户joedevo在特定时间范围内对数据库所做的所有操作,步骤如下: 1.创建LogMiner字典 使用LogMiner分析joedevo相关的数据,必须在joedevo对它的所有表做任何的更改操作前创建LogMiner字典或者直接使用在线字典,本例使用已提取到重做日志文件中的LogMiner字典. 2.添加重做日志文件 在joedevo对数据库做了一些更改操作之后,可以指定对应的重做日志文件来分析:

Python描述符常用场景详解

Descriptors( 描述符 ) 是语言中一个深奥但很重要的一个黑魔法,它被广泛应用于 Python 语言的内核,熟练掌握描述符将会为 Python程序员 的工具箱添加一个额外的技巧.本文将讲述描述符的定义以及一些常见的场景,并且在文末会补充一下 __getattr , __getattribute__, __getitem__ 这三个同样涉及到属性访问的魔术方法,希望对大家 学习python有所帮助. 描述符的定义 descr__get__(self, obj, objtype=None)

正则表达式基础及常用正则表达式

整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$".只能输入n位的数字:"^\d{n}$".只能输入至少n位的数字:"^\d{n,}$".只能输入m~n位的数字:."^\d{m,n}$"只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$".只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$".只能输入有1~

正则表达式学习和常用正则验证规则(包括用户名,密码,手机号,网址等)

正则表达式基础语法 1.1匹配不同类型的字符 字符类 匹配的字符 \d 匹配一个数字字符.等价于 [0-9]. \D 匹配一个非数字字符.等价于 [^0-9]. \w 匹配包括下划线的任何单词字符.等价于‘[A-Za-z0-9_]‘. \W 匹配任何非单词字符.等价于 ‘[^A-Za-z0-9_]‘. \s 匹配任何空白字符,包括空格.制表符.换页符等等.等价于 [ \f\n\r\t\v]. \S 匹配任何非空白字符.等价于 [^ \f\n\r\t\v]. .(点号) 任一字符 […] 括号中的