正则取出字符串中不连续的符合条件的字符

我们知道在正则中如果要取出一串字符串中连续的字符可以使用?、+、*、{}等元字符

比如:"432efwklej5431"中我需要取出"efwklej"只需要[A-Za-z]+就可以实现效果。

public class r {

    public static void main(String[] args) {
        String s = "432efwklej5431";
        String rex = "[A-Za-z]+";

        Pattern p = Pattern.compile(rex);
        Matcher m = p.matcher(s);

        if(m.find()) {
            System.out.print(m.group().toString());
        }

    }

}

但是假如efwklej是不连续的字符又该怎么取出呢?我们都知道?、+、*、{}这几个元字符都是对连续的字符起效果的,如果把"432efwklej5431"换成"432ef2w4kl4ej5431",上面的写法是不能取出这串字符串中的所有字母的,几个字母间被数字隔开了。

换个思路,既然不能连续的取出字母,那就一个一个的把字符取出来判断,如果是字母就进行输出,直到取到字符串中的最后一个字符

public class r {

    public static void main(String[] args) {
        String s = "432ef2w4kl4ej5431";
        String rex = "[A-Za-z]+";
//        定义一个变量用于储存当前读取个数
        int count = 0;

        Pattern p = Pattern.compile(rex);
        Matcher m = p.matcher(s);

//        当当前读取的个数小于字符串长度时继续读取
        while(count<s.length()) {
        if(m.find()) {
            System.out.print(m.group().toString());
            count++;
        }
        }

    }

}

可以看到最终的输出结果是正确的

原文地址:https://www.cnblogs.com/lyd447113735/p/8717972.html

时间: 2024-10-18 11:30:24

正则取出字符串中不连续的符合条件的字符的相关文章

输入字符串取出字符串中的连续数字放入单独数组

public class ShowsNum { public Map getNums(String str){ HashMap<Integer,String> map=new HashMap<Integer,String>(); char [] chnum=str.toCharArray(); StringBuffer strbuffer=new StringBuffer(); int des=1; for(int i=0;i<chnum.length;i++){ //当前字

PHP中取出字符串中的空格 逗号

1 preg_replace("/\s| |,|,/","",$_str) PHP中取出字符串中的空格 逗号 (包括中文状态下)

python_取出字符串中出现2次的字符串

#取出字符串中出现2次的字符串,使用count方法统计def two_zifuchuan(str): s=set() for i in str: if str.count(i)==2: s.add(i) return s #取出字符串中出现2次的字符串,使用字典统计 def two_occur(str): s={} for i in str: if i in s.keys(): s[i]+=1 else: s[i]=1 return [i for i in s if s[i]==2] str="

找出字符串中第一个不重复的字符(JavaScript实现)

如题~ 此算法仅供参考,小菜基本不懂高深的算法,只能用最朴实的思想去表达. 1 //找出字符串中第一个不重复的字符 2 // firstUniqueChar("vdctdvc"); --> t 3 function firstUniqueChar(str){ 4 var str = str || "", 5 i = 0, 6 k = "", 7 _char = "", 8 charMap = {}, 9 result =

查找字符串中第一个不重复的字符

import java.util.*; public class GetFirstNoRepeatChar{ static char getChar(String s){ int len=s.length(); int len_tim=128; char c='F'; int []tim=new int[len_tim]; //以字符做下标,存储该字符出现次数 for(int i=0;i<len;i++){ c=s.charAt(i); tim[c]+=1; } //遍历,取得 for(int

[email&#160;protected]返回字符串中出现次数最多的那个字符和次数2

1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title>@返回字符串中出现次数最多的那个字符和次数2</title> 6 7 </head> 8 <body> 9 </body> 10 11 <script type="text/javasc

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。

这是华为2013的一个机试题,会好半天才想出来,用了三个for循环,可能有点繁琐,但只要慢慢看还是好理解的, 题目: 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串"abacacde"过滤结果为"abcde". #include<stdio.h> #include<string.h> void main() { char a[]="aba

《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 &amp;&amp; 检查一个字符串是文本还是二进制

过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: import string allchars = string.maketrans('','') #all chars table def makefilter(keep): delchars = allchars.translate(allchars,keep) def thefilter(s): retu

js实现从字符串中查找出现次数最多的字符的两种解决办法

方法一:正则表达式匹配 1 var str = "adadfdfseffserfefsefseeffffftsdg"; 2 var maxLength = 0; var result = ""; 3 while (str != '') { 4 oldStr = str; 5 getStr = str.charAt(0); 6 str = str.replace(new RegExp(getStr, "g"), ""); 7 i