android使用正则表达式过滤字符串

今天公司让我做一个过滤字符串的算法, 我想了想觉得使用正则表达式是个不错的选择 然后查了一下正则表达式的资料 ,好东西我肯定想着大家伙啦 废话不多说 直接分享。


在代码中过滤 非0-9的字符串, 只需要修改正则表达式的条件就可以过滤出我们须要的字符串 嘿嘿~~~。
复制内容到剪贴板
代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

public class check {
        public static String StringFilter(String str) throws PatternSyntaxException {
                String regEx = "[^0-9]";
                Pattern p = Pattern.compile(regEx);
                Matcher m = p.matcher(str);
                return m.replaceAll("").trim();
        }

        public static void main(String[] args) {
        String   str   =   "sdfdsfsdfgfdg2134234fdgdfg6456456fdgdfhh4234523分剑荡四方进口量缩减跌幅完额";     
        System.out.println(StringFilter(str));   
//这样字符串就过滤出来啦
        }

}
加入特定限制条件「[]」
[a-z]     条件限制在小写a to z范围中一个字符
[A-Z]     条件限制在大写A to Z范围中一个字符
[a-zA-Z] 条件限制在小写a to z或大写A to Z范围中一个字符
[0-9]     条件限制在小写0 to 9范围中一个字符
[0-9a-z] 条件限制在小写0 to 9或a to z范围中一个字符
[0-9[a-z]] 条件限制在小写0 to 9或a to z范围中一个字符(交集)

[]中加入^后加再次限制条件「[^]」
[^a-z]     条件限制在非小写a to z范围中一个字符
[^A-Z]     条件限制在非大写A to Z范围中一个字符
[^a-zA-Z] 条件限制在非小写a to z或大写A to Z范围中一个字符
[^0-9]     条件限制在非小写0 to 9范围中一个字符
[^0-9a-z] 条件限制在非小写0 to 9或a to z范围中一个字符
[^0-9[a-z]] 条件限制在非小写0 to 9或a to z范围中一个字符(交集)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<h3>回答1:</h3><br/>可以使用正则表达式来提取字符串中的电话号码。例如,可以使用以下代码: ```python import re text = "我的电话号码是:123-456-789,你可以打电话给我。" phone_pattern = re.compile(r'\d{3}-\d{3}-\d{4}') phone_numbers = phone_pattern.findall(text) print(phone_numbers) ``` 输出结果为: ``` ['123-456-789'] ``` 其中,`re.compile()`函数用于编译正则表达式,`r'\d{3}-\d{3}-\d{4}'`表示匹配三个数字、一个短横线、三个数字、一个短横线、四个数字的模式。`findall()`函数用于在文本中查找所有匹配的模式,并返回一个列表。 <h3>回答2:</h3><br/>在Python中使用正则表达式提取字符串中的电话号码可以使用re(Regular Expression,正则表达式)库。以下是几个步骤: 1.导入re库 ``` import re ``` 2.定义正则表达式 电话号码的格式可能不同,有可能是带区号的,有可能是带分机号的,也有可能是没有区号和分机号的。所以需要定义多个正则表达式来匹配不同格式的电话号码。 例如: 1)只有数字的电话号码(11位) ``` pattern1 = r'\d{11}' ``` 2)带区号的电话号码(可能有空格或“-”分隔符) ``` pattern2 = r'\d{3}\s*-\s*\d{8}|\d{4}\s*-\s*\d{7}' ``` 3)带分机号的电话号码 ``` pattern3 = r'\d{8,11}\s*-\s*\d{1,5}' ``` 3.使用re.match()函数匹配字符串 ``` text = '我的电话号码是:13811112222,工作电话是:010-88888888,手机是:13666666666,分机号是:8888。' match1 = re.match(pattern1, text) match2 = re.match(pattern2, text) match3 = re.match(pattern3, text) ``` 4.输出匹配结果 ``` if match1: print('匹配结果1:', match1.group()) if match2: print('匹配结果2:', match2.group()) if match3: print('匹配结果3:', match3.group()) ``` 完整代码如下: ``` import re pattern1 = r'\d{11}' pattern2 = r'\d{3}\s*-\s*\d{8}|\d{4}\s*-\s*\d{7}' pattern3 = r'\d{8,11}\s*-\s*\d{1,5}' text = '我的电话号码是:13811112222,工作电话是:010-88888888,手机是:13666666666,分机号是:8888。' match1 = re.match(pattern1, text) match2 = re.match(pattern2, text) match3 = re.match(pattern3, text) if match1: print('匹配结果1:', match1.group()) if match2: print('匹配结果2:', match2.group()) if match3: print('匹配结果3:', match3.group()) ``` 输出结果如下: ``` 匹配结果1:13811112222 匹配结果2:010-88888888 匹配结果3:13666666666 - 8888 ``` <h3>回答3:</h3><br/>在Python中使用正则表达式提取字符串中的电话号码,需要先导入re模块,然后使用re.match、re.search、re.findall等函数来匹配字符串,并获取匹配到的部分。 首先定义一个字符串,假设为“我的电话号码是13888888888,你的电话号码是13999999999”,接下来使用正则表达式匹配该字符串中的电话号码: ```python import re # 定义字符串 string = "我的电话号码是13888888888,你的电话号码是13999999999" # 正则表达式匹配电话号码 phone_numbers = re.findall(r'\d{11}', string) # 输出匹配到的电话号码 print("电话号码:", phone_numbers) ``` 如果字符串中有多个电话号码,使用re.findall函数会将所有匹配到的电话号码存储在一个列表中。 正则表达式r'\d{11}'表示匹配11个数字,如果需要匹配其他长度的电话号码,可以根据实际情况修改正则表达式中的数量词。 除此之外,还可以使用其他正则表达式的语法,如\d+、\d{3,4}-\d{7,8}等来匹配不同格式的电话号码。需要根据实际情况来选择匹配规则。 总的来说,Python使用正则表达式提取字符串中的电话号码,实现起来比较简单。需要熟悉正则表达式的语法及其基本用法,并结合实际情况来选择合适的匹配规则。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值