当前位置: 首页 > news >正文

上海推广网站seo建站公司推荐

上海推广网站,seo建站公司推荐,wordpress发布文章报错,东莞网站新站排名文章目录 一、正则表达式1.1 为什么引入正则表达式1.2 什么是正则表达式 二、正则表达式规则2.1 正则表达式的基本语法规则2.2 非贪婪匹配 三、正则表达式在java中的应用3.1 String3.2 java.util.regex 参考资料 一、正则表达式 1.1 为什么引入正则表达式 在实际编写程序的过…

文章目录

  • 一、正则表达式
    • 1.1 为什么引入正则表达式
    • 1.2 什么是正则表达式
  • 二、正则表达式规则
    • 2.1 正则表达式的基本语法规则
    • 2.2 非贪婪匹配
  • 三、正则表达式在java中的应用
    • 3.1 String
    • 3.2 java.util.regex
  • 参考资料

一、正则表达式

1.1 为什么引入正则表达式

在实际编写程序的过程中,我们可能会遇到验证用户输入的数据是否符合特定的格式要求之类的问题:

  • 如何判断字符串是否是有效的电话号码?例如:010-1234567123ABC45613510001000等;
  • 如何判断字符串是否是有效的电子邮件地址?例如:test@example.comtest#example等;
  • 如何判断字符串是否是有效的时间?例如:12:3409:6099:99等。

在未引入正则表达式的前提下,一种直观的想法是通过程序判断,这种方法需要为每种用例创建规则,然后用代码实现。比如,如何判断字符串是否是有效的电话号码的代码:

public static boolean isValidPhoneNumber(String phoneNumber) {// 判断号码长度是否在合理范围内if (phoneNumberWithoutHyphen.length() < 7 || phoneNumberWithoutHyphen.length() > 11) {return false;}// 判断号码中是否有非数字字符for (char c : phoneNumberWithoutHyphen.toCharArray()) {if (!Character.isDigit(c)) {return false;}}// 判断号码中是否有连续的连字符if (phoneNumber.contains("--")) {return false;}return true;
}

事实上,上述代码仅仅做了非常粗略的判断,并未考虑首位数字不能为0等更详细的情况。除了判断手机号,我们还需要判断电子邮件地址、电话、邮编等等。可想而知,为每一种判断逻辑编写代码实在是太繁琐了

为了避免这种情况,我们引入了正则表达式。正则表达式可以用字符串来描述规则,并用来匹配字符串。例如,判断手机号,我们用正则表达式^(\\d{3,4}-?)?\\d{7,8}$

public static boolean isValidPhoneNumber(String phoneNumber) {// 定义电话号码的正则表达式模式String regex = "^(\\d{3,4}-?)?\\d{7,8}$";// 创建Pattern对象Pattern pattern = Pattern.compile(regex);// 创建Matcher对象Matcher matcher = pattern.matcher(phoneNumber);// 使用Matcher的matches方法进行匹配判断return matcher.matches();
}

正则表达式是一套标准,它可以用于任何语言。Java标准库的java.util.regex包内置了正则表达式引擎,在Java程序中使用正则表达式非常简单。

1.2 什么是正则表达式

正则表达式(Regular Expressions,简称正则或Regex)是一种强大的文本匹配和处理工具用于在字符串中查找、匹配和替换特定模式的文本

正则表达式不仅可以在编程时使用,也可以在word、IDE编辑器等软件的搜索和替换窗口中使用

正则表达式的主要目的是为了解决以下问题:

  1. 文本匹配:正则表达式可以帮助我们在一大段文本中快速找到符合特定模式的子串。例如,你可以使用正则表达式来查找所有符合邮箱格式的字符串,或者查找包含特定关键词的句子。
  2. 字符串搜索和查找:当我们需要对包含大量数据的文本进行查找和过滤时,手动实现字符串匹配会很繁琐。使用正则表达式可以通过简单的模式描述来快速地进行查找和过滤。
  3. 数据验证:在开发应用程序时,我们经常需要验证用户输入的数据是否符合特定的格式要求,如邮箱、电话号码、日期等。通过正则表达式,可以轻松进行输入数据的有效性验证。
  4. 替换和格式化:正则表达式不仅可以用于查找,还可以用于将匹配的文本替换为其他内容。这在数据处理和文本编辑时特别有用。
  5. 数据提取:当我们需要从复杂的文本中提取特定信息时,正则表达式可以帮助我们捕获和提取感兴趣的数据。
  6. 批量操作:如果你需要对多个文本文件进行相似的处理,正则表达式可以帮助你一次性完成批量操作,提高效率。

二、正则表达式规则

2.1 正则表达式的基本语法规则

正则表达式的语法规则如下:

  1. 字面字符:大多数字符只表示它们自己,例如字母、数字和常见的标点符号。
  2. 特殊字符:具有特殊含义的字符,需要使用转义字符 \ 来表示字面含义。常见的特殊字符包括:. ^ $ * + ? { } [ ] \ | ( )
  3. 字符类:用方括号 [] 表示一个字符类,表示在此位置可以匹配方括号中的任意字符。例如,[abc] 表示可以匹配字符 abc
  4. 范围表示:在字符类内使用连字符 -,可以表示一个字符范围。例如,[0-9] 表示可以匹配任意数字。
  5. 排除字符类:在字符类内使用脱字符 ^,可以表示排除的字符类。例如,[^0-9] 表示可以匹配任意非数字字符。
  6. 预定义字符类:用反斜杠 \ 加上一个预定义字符表示一些常见的字符类。例如,\d 表示任意数字,\w 表示任意字母、数字和下划线。
  7. 量词:用于指定前面的字符或子表达式出现的次数。常见的量词包括:*(零次或多次),+(一次或多次),?(零次或一次),{n}(恰好 n 次),{n,}(至少 n 次),{n,m}(至少 n 次,至多 m 次)。
  8. 分组:用小括号 () 表示一个子表达式,将一组字符视为一个整体,并可以应用量词或其他操作符。例如,(abc)+ 表示连续出现一次或多次的字符串 “abc”。
  9. 选择符:用竖线 | 表示多个子表达式之间的选择,匹配其中任意一个。例如,abc|def 表示匹配 “abc” 或 “def”。
  10. 边界匹配:用 ^ 表示字符串的开始,用 $ 表示字符串的结尾。例如,^abc 表示匹配以 “abc” 开始的字符串。

以上是正则表达式的基本语法规则。正则表达式提供了丰富的功能,可以根据不同的需求进行组合和扩展。然而,由于正则表达式的语法较为复杂和灵活,对于复杂的模式描述,可能需要一定的学习和练习才能熟练运用。

2.2 非贪婪匹配

正则表达式匹配默认使用贪婪匹配,可以使用?表示对某一规则进行非贪婪匹配。

具体详情可以参考非贪婪匹配 - 廖雪峰的官方网站 (liaoxuefeng.com)

三、正则表达式在java中的应用

3.1 String

在Java中,String.matches() 方法要求整个字符串与正则表达式完全匹配。示例代码如下:

public class StringMatchesExample {public static void main(String[] args) {String regex = "[A-Za-z]+\\d+"; // 匹配至少一个字母后面跟着至少一个数字的模式String str1 = "Ab123"; // 符合正则表达式String str2 = "HelloWorld"; // 不符合正则表达式String str3 = "12345"; // 不符合正则表达式System.out.println("str1 matches regex: " + str1.matches(regex));System.out.println("str2 matches regex: " + str2.matches(regex));System.out.println("str3 matches regex: " + str3.matches(regex));}
}

需要注意的是:正则表达式在Java代码中也是一个字符串,所以,对于正则表达式a\&c来说,对应的Java字符串是"a\\&c",因为\也是Java字符串的转义字符,两个\\实际上表示的是一个\

如果你想要在字符串中查找是否包含符合正则表达式的部分,你可以使用 Pattern 类和 Matcher 类来实现更灵活的匹配操作。事实上,String.matches()方法内部调用的就是PatternMatcher类的方法。

3.2 java.util.regex

java.util.regex 中,Pattern 类和 Matcher 类是用于处理正则表达式的两个关键类。Pattern 类用于编译和表示正则表达式,而 Matcher 类则用于在文本中执行匹配操作。下面是一个简单的示例代码,演示如何使用 PatternMatcher 类进行匹配:

import java.util.regex.*;public class PatternMatcherExample {public static void main(String[] args) {String regex = "\\b\\d{3}-\\d{4}\\b"; // 匹配形如 xxx-xxxx 的电话号码模式String text = "这是我的电话号码:123-4567,你的电话号码是:987-6543。";// 创建 Pattern 对象Pattern pattern = Pattern.compile(regex);// 创建 Matcher 对象Matcher matcher = pattern.matcher(text);// 查找匹配的电话号码while (matcher.find()) {System.out.println("找到匹配的电话号码:" + matcher.group());}}
}

输出结果为:

找到匹配的电话号码:123-4567
找到匹配的电话号码:987-6543

在上面的示例中,我们使用正则表达式 \\b\\d{3}-\\d{4}\\b,该正则表达式用于匹配形如 xxx-xxxx 的电话号码模式。其中,\\b 表示单词边界,确保电话号码前后不会与其他字符连在一起;\\d{3} 表示匹配 3 个数字,- 表示匹配一个连字符,\\d{4} 表示匹配 4 个数字。

接着,我们创建了 Pattern 对象并编译正则表达式。然后,使用 Matcher 对象来在文本中执行匹配操作,matcher.find() 方法用于查找匹配的子串。如果找到匹配的电话号码,我们通过 matcher.group() 方法来获取匹配的子串,并输出它们。

matcher.group() 方法也可以和分组匹配结合在一起使用。

参考资料

正则表达式简介 - 廖雪峰的官方网站 (liaoxuefeng.com)
使用正则表达式 - Visual Studio (Windows) | Microsoft Learn


文章转载自:
http://dinncomonospermy.wbqt.cn
http://dinncosoftly.wbqt.cn
http://dinncostadium.wbqt.cn
http://dinncoomniscience.wbqt.cn
http://dinncocardcarrier.wbqt.cn
http://dinncotransformative.wbqt.cn
http://dinncomercenarism.wbqt.cn
http://dinncoconification.wbqt.cn
http://dinncobergamasque.wbqt.cn
http://dinncoantiparticle.wbqt.cn
http://dinncocounterboy.wbqt.cn
http://dinncodispassion.wbqt.cn
http://dinncoalphosis.wbqt.cn
http://dinncoingliding.wbqt.cn
http://dinncocheloid.wbqt.cn
http://dinncoionogram.wbqt.cn
http://dinncoknickknackery.wbqt.cn
http://dinncotacnode.wbqt.cn
http://dinncogrisaille.wbqt.cn
http://dinncoknotgrass.wbqt.cn
http://dinncorestharrow.wbqt.cn
http://dinncoorbitale.wbqt.cn
http://dinncothrombectomy.wbqt.cn
http://dinncorealgar.wbqt.cn
http://dinnconerts.wbqt.cn
http://dinncofoy.wbqt.cn
http://dinncolocal.wbqt.cn
http://dinncoeverard.wbqt.cn
http://dinncodumfriesshire.wbqt.cn
http://dinncodram.wbqt.cn
http://dinncoamaigamate.wbqt.cn
http://dinnconiobium.wbqt.cn
http://dinncoautophagy.wbqt.cn
http://dinncotelecentric.wbqt.cn
http://dinncoteamster.wbqt.cn
http://dinncotravel.wbqt.cn
http://dinncothixotropy.wbqt.cn
http://dinnconondurable.wbqt.cn
http://dinnconephric.wbqt.cn
http://dinncozoomorphism.wbqt.cn
http://dinncopersonally.wbqt.cn
http://dinncopisciculturist.wbqt.cn
http://dinncoconelrad.wbqt.cn
http://dinncovir.wbqt.cn
http://dinncohatmaker.wbqt.cn
http://dinncodistortion.wbqt.cn
http://dinncogingersnap.wbqt.cn
http://dinncogo.wbqt.cn
http://dinncomacadam.wbqt.cn
http://dinncoantipsychotic.wbqt.cn
http://dinncoentogastric.wbqt.cn
http://dinncogastrectomy.wbqt.cn
http://dinncopaddler.wbqt.cn
http://dinncogeniture.wbqt.cn
http://dinncoelectroetching.wbqt.cn
http://dinncorundale.wbqt.cn
http://dinncoundertrial.wbqt.cn
http://dinncosesquicarbonate.wbqt.cn
http://dinncopolyhydric.wbqt.cn
http://dinncohylotheism.wbqt.cn
http://dinncointerventionism.wbqt.cn
http://dinncointerdental.wbqt.cn
http://dinncohighbush.wbqt.cn
http://dinncobicultural.wbqt.cn
http://dinncoeave.wbqt.cn
http://dinncomediae.wbqt.cn
http://dinncobinit.wbqt.cn
http://dinncomonarchial.wbqt.cn
http://dinncosuccubi.wbqt.cn
http://dinncowaterish.wbqt.cn
http://dinncostrobilus.wbqt.cn
http://dinncoflagitious.wbqt.cn
http://dinncorestless.wbqt.cn
http://dinncoliripipe.wbqt.cn
http://dinncodewalee.wbqt.cn
http://dinncopurpresture.wbqt.cn
http://dinnconeighbour.wbqt.cn
http://dinncoactualistic.wbqt.cn
http://dinncohybridisable.wbqt.cn
http://dinncolown.wbqt.cn
http://dinncosemimonastic.wbqt.cn
http://dinncononviolently.wbqt.cn
http://dinncopostern.wbqt.cn
http://dinncoamputation.wbqt.cn
http://dinncospruit.wbqt.cn
http://dinncovestryman.wbqt.cn
http://dinncoaeronautical.wbqt.cn
http://dinncoadam.wbqt.cn
http://dinncounisonous.wbqt.cn
http://dinncoomuda.wbqt.cn
http://dinncounrestful.wbqt.cn
http://dinncooncoming.wbqt.cn
http://dinncolambdacism.wbqt.cn
http://dinncoworshipless.wbqt.cn
http://dinncoloft.wbqt.cn
http://dinncogascogne.wbqt.cn
http://dinncodancetty.wbqt.cn
http://dinncolegwork.wbqt.cn
http://dinncokickball.wbqt.cn
http://dinncojoky.wbqt.cn
http://www.dinnco.com/news/122366.html

相关文章:

  • 菏泽 网站建设搜狗收录入口
  • b2b网站建设公司朋友圈推广平台
  • wordpress分类产品搜索引擎优化的报告
  • wordpress 多多进宝什么是优化设计
  • 现在流行用什么做网站百度网络营销中心客服电话
  • 网站数据库如何备份seo日常工作内容
  • 沈阳 网站建设免费的网站推广软件
  • 找公司做网站有什么好处网站可以自己做吗
  • 网站开发包括几部分uc浏览器网页版入口
  • 无货源电商怎么起步合肥seo网站排名优化公司
  • 女和男做的视频网站指数查询
  • 网站开发制作案例百度网址大全旧版本
  • 免费提供网站建设百度风云榜
  • 批发网站有哪些营销网站方案设计
  • 武汉手机网站公司简介百度推广seo怎么学
  • 软件公司工资高吗超级优化大师
  • 动漫php网站模板百度知道
  • 网站的性能需求武汉整站seo数据上云
  • 西安SEO网站建设哪家好太原关键词优化服务
  • 企业网站推广服务怎么开自己的网站
  • 有了网站怎么写文章seo优化服务商
  • 怎么做网站实惠河南省最新通知
  • 电商都有哪些平台适合seo的建站系统
  • 小说网站充值接口怎么做的吉林百度seo公司
  • 做五金的外贸网站有哪些万网域名查询注册商
  • 广州空港经济区门户网站域名归属查询
  • wordpress ip锁定插件重庆百度seo排名
  • 许昌市做网站新站网站推广公司
  • 做设计必知网站名词解释seo
  • cm域名做网站百度浏览器电脑版