2.4正则表达式初步

现代计算机大多数处理非数值任务

所以应当熟悉串的API

串的:

搜索 匹配 分隔 替换

处理工具:正则表达式regular expression

其发展已经相当成熟,几乎可以当做一门独立的语言

有一套完整的规则和独立的语法系统

Java内置了对正则的支持

Java串的API中涉及的正则表达式

Split

正则表达式应用——Split

package RegularExpression;
 
public class SplitTest {
    public static void main(String[] args) {
       String s = "abc  zyx aaa   bbb";//空格较多时,会产生空串
//     String s = "abc+zyx+aaa+bbb";
//     String ss[] = s.split(" {1,}");//" {1,}"正则写法,最少出现1次,最多出现任意多次(不谢就是任意多次)
       String ss[] = s.split(" +");//" +"和上面是同一个意思
       //如果用+作分隔符,则必须转义,
       //----- "\\+" 表示 "+"
       //----- "\\{" 表示 "{"
       //----- "\\"  表示 "\"
      
       for(int i=0;i<ss.length;i++){
           System.out.println(ss[i]);
       }
    }
}
abc
zyx
aaa
bbb

//如果用+作分隔符,则必须转义

//----- "\\+" 表示 "+"

//----- "\\{" 表示 "{"

//----- "\\"表示 "\"

Match

判断给定的字符串是否满足正则表达式

Excel地址规则

package RegularExpression;
 
public class MatchTest {
    public static void main(String[] args) {
       String s = "AB88";
       System.out.println(s.matches("[A-Z]{1,}[0-9]{1,}"));
       //"[A-Z]{1,}" 表示 A到Z出现了1次到无穷次,0到9出现了1次到无穷次
       //注:原视频中讲的有错误,在Excel中,列是26进制的从A到Z,然后是AA...AZ,然后是AAA,AAB.....
       //可以出现三次字母的,不信你自己去看Excel!
    }
}
true


可以用于:判断手机号,身份证号,年龄等一些需要用户输入的要素
,防止用户输入明显错误的信息

[A-Z]{1,5}方括号表示出现的内容,大括号表示出现的次数(量词

+ 表示 {1,} 最少一次

* 表示 {0,} 任意多次

? 表示 {0,1} 零次或一次

replaceAll

格式替换

2005-12-05à 05/12 2005年

/*
replaceAll
格式替换
2005-12-05    05/12 2005年
 
*/
package RegularExpression;
 
public class ReplaceAllTest {
    public static void main(String[] args) {
       // Todo Auto-generated method stub
       String s = "sdf jkjsd f2014-04-23我在写代码' ;d'dfs ";
//     s=s.replaceAll("[0-9]{4}-[0-9]{2}-[0-9]{2}","***");
      
       s=s.replaceAll("([0-9]{4})-([0-9]{2})-([0-9]{2})","$3/$2 $1年");
       //子组:在正则表达式中,用括号()括起来的部分称为子组
       //$1,表示第一个子组
       //$2,表示第二个子组
       System.out.println(s);
    }
}
sdf jkjsd f23/04 2014年我在写代码' ;d'dfs

// 子组 :在正则表达式中,用括号 () 括起来的部分称为子组

//$1,表示第一个子组

//$2,表示第二个子组

分散字符串

请把下列字符串分散为数字和字符构成的串

String s1 ="abc1234xyz667kkmd764tttt";

串由字母和数字间隔构成,要分离出所有的字母段和数字段,即:

abc

1234

xyz

667

kkmd

764

tttt

/*
 * 分散字符串
请把下列字符串分散为数字和字符构成的串
String s1 = "abc1234xyz667kkmd764tttt";
串由字母和数字间隔构成,要分离出所有的字母段和数字段,即:
abc
1234
xyz
667
kkmd
764
tttt
*/
 
package RegularExpression;
 
import java.util.ArrayList;
import java.util.List;
 
public class SplitString {
    public static void main(String[] args) {
       String s = "1234xyz667kkmd764tttt123";
       String []s1 = s.split("[a-z]+");//分别分割成两个字符串数组
       String []s2 = s.split("[0-9]+");
       List<String> list = new ArrayList<String>();
      
       if(Character.isLetter(s.charat(0))){//如果以字母开头
           for(int i=0;i<s1.length-1;i++){
              list.add(s1[i]);//加到list里
              list.add(s2[i]);
           }
           if(Character.isLetter(s.charat(s.length()-1))){//如果以字母结尾
              showSplit(list);
           }
           if(Character.isDigit(s.charat(s.length()-1))){//如果以数字结尾
              list.add(s1[s1.length-1]);
              showSplit(list);
           }
       }
       if(Character.isDigit(s.charat(0))){//如果以数字开头
           for(int i=0;i<s2.length-1;i++){
              list.add(s2[i]);
              list.add(s1[i]);
           }
           if(Character.isLetter(s.charat(s.length()-1))){//如果以字母结尾
              list.add(s2[s2.length-1]);
              showSplit(list);
           }
           if(Character.isDigit(s.charat(s.length()-1))){//如果以数字结尾
              list.add(s2[s2.length-1]);
              list.add(s1[s1.length-1]);
              showSplit(list);
           }
       }
    }
   
    public static void showSplit(List<String> list){
       for(int i=1;i<list.size();i++){
           System.out.println(list.get(i));
       }
    }
}
1234
xyz
667
kkmd
764
tttt
123

上述代码略显繁琐,若您有更好的想法欢迎留言。

编程算法基础-2.4正则表达式初步的更多相关文章

  1. HTML5数字输入仅接受整数的实现代码

    这篇文章主要介绍了HTML5数字输入仅接受整数的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. HTML5 WebSocket实现点对点聊天的示例代码

    这篇文章主要介绍了HTML5 WebSocket实现点对点聊天的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

  4. ios – 在Swift中将输入字段字符串转换为Int

    所以我非常擅长制作APP广告Swift,我试图在文本字段中做一些非常简单的输入,取值,然后将它们用作Int进行某些计算.但是’vardistance’有些东西不正确它是导致错误的最后一行代码.它说致命错误:无法解开Optional.None解决方法在你的例子中,距离是一个Int?否则称为可选的Int..toInt()返回Int?因为从String到Int的转换可能失败.请参阅以下示例:

  5. 如何在iOS中检测文本(字符串)语言?

    例如,给定以下字符串:我想检测每个声明的字符串中使用的语言.让我们假设已实现函数的签名是:如果没有检测到语言,则返回可选字符串.因此,适当的结果将是:有一个简单的方法来实现它吗?

  6. xamarin – 崩溃在AccountStore.Create().保存(e.Account,“);

    在Xamarin.Forms示例TodoAwsAuth中https://developer.xamarin.com/guides/xamarin-forms/web-services/authentication/oauth/成功登录后,在aOnAuthenticationCompleted事件中,应用程序在尝试保存到Xamarin.Auth时崩溃错误说不能对钥匙串说期待着寻求帮助.解决方法看看你

  7. ios – 将视频分享到Facebook

    我正在编写一个简单的测试应用程序,用于将视频从iOS上传到Facebook.由于FacebookSDK的所有文档都在Objective-C中,因此我发现很难在线找到有关如何使用Swift执行此操作的示例/教程.到目前为止我有这个在我的UI上放置一个共享按钮,但它看起来已禁用,从我读到的这是因为没有内容设置,但我看不出这是怎么可能的.我的getVideoURL()函数返回一个NSURL,它肯定包含视

  8. xcode – 错误“线程1:断点2.1”

    我正在研究RESTAPI管理器.这是一个错误,我无法解决它.我得到的错误在下面突出显示.当我打电话给这个班级获取资源时:我评论的线打印:Thread1:breakpoint2.1我需要修复错误的建议.任何建议都非常感谢解决方法您可能在不注意的情况下意外设置了断点.单击并拖动代表断路器外部断点的蓝色刻度线以将其擦除.

  9. ios – 更改导航栏标题swift中的字符间距

    类型的值有人可以帮我这个或建议一种不同的方式来改变swift中导航栏标题中的字符间距吗?解决方法您无法直接设置属性字符串.你可以通过替换titleView来做一个技巧

  10. ios – 如何从变量访问属性或方法?

    是否可以使用变量作为Swift中方法或属性的名称来访问方法或属性?在PHP中,您可以使用$object->{$variable}.例如编辑:这是我正在使用的实际代码:解决方法你可以做到,但不能使用“纯粹的”Swift.Swift的重点是防止这种危险的动态属性访问.你必须使用Cocoa的Key-ValueCoding功能:非常方便,它完全穿过你要穿过的字符串到属性名称的桥,但要注意:这里是龙.

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部